7

在阅读 Robert Love 的“Linux 内核开发”时,我在第 119 页发现:

中断处理程序通常标记为静态,因为它从不直接从另一个文件调用。

例如:

static irqreturn_t intr_handler(int irq, void *dev)

但为什么会这样呢?我怀疑这个函数会被内核调用,如果我们将它设为静态,那么内核将如何调用它?

4

1 回答 1

9

据此,函数的使用方式是将其“注册”到内核中。也就是说,有一个函数InstallIntHdlr,您可以调用它并将指针传递给您的处理程序。然后内核可以使用该指针来调用函数本身。

我的猜测,虽然我不确定,但它static被用作强制正确使用中断处理程序的一种方式。也就是说,由于不能从其他文件调用静态函数,它会强制您将指针传递给它,而不是直接调用它。

于 2013-07-22T06:19:18.627 回答