在阅读Robert Love的“Linux内核开发”时,我在第119页找到了:
中断处理程序通常标记为静态,因为它永远不会直接从另一个文件调用。
例如:
static irqreturn_t intr_handler(int irq, void *dev)
但为什么会这样呢?我怀疑这个函数是否会由内核调用,如果我们将其设置为静态,那么内核将如何调用它?
答案 0 :(得分:8)
根据this,函数的使用方式是通过内核“注册”它。也就是说,有一个函数,例如InstallIntHdlr
,您可以调用它并将指针传递给您的处理程序。然后内核可以使用该指针来调用函数本身。
我的猜测,虽然我不确定这一点,但是static
被用来强制正确使用中断处理程序。也就是说,由于无法从其他文件调用静态函数,它会强制您将指针传递给它而不是直接调用它。