为什么有必要将中断处理程序函数标记为静态?

时间:2013-07-22 06:06:59

标签: c linux linux-device-driver

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

  

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

例如:

static irqreturn_t intr_handler(int irq, void *dev)

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

1 个答案:

答案 0 :(得分:8)

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

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