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

pra*_*pta 7 c linux linux-device-driver

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

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

例如:

static irqreturn_t intr_handler(int irq, void *dev)
Run Code Online (Sandbox Code Playgroud)

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

jos*_*hlf 9

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

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