C 为什么必须将中断处理程序函数标记为静态?
在阅读Robert Love的“Linux内核开发”时,我在第119页发现: 中断处理程序通常被标记为静态,因为它从不直接从另一个文件调用 例如:C 为什么必须将中断处理程序函数标记为静态?,c,linux,linux-device-driver,C,Linux,Linux Device Driver,在阅读Robert Love的“Linux内核开发”时,我在第119页发现: 中断处理程序通常被标记为静态,因为它从不直接从另一个文件调用 例如: static irqreturn_t intr_handler(int irq, void *dev) 但为什么会这样呢?我怀疑这个函数是否会被内核调用,如果我们将它设为静态,那么内核将如何调用它?根据,函数的使用方式是通过向内核“注册”它。也就是说,有一个函数,比如InstallIntHdlr,可以调用它并将指针传递给处理程序。然后内核可以使用该
static irqreturn_t intr_handler(int irq, void *dev)
但为什么会这样呢?我怀疑这个函数是否会被内核调用,如果我们将它设为静态,那么内核将如何调用它?根据,函数的使用方式是通过向内核“注册”它。也就是说,有一个函数,比如InstallIntHdlr
,可以调用它并将指针传递给处理程序。然后内核可以使用该指针调用函数本身
我的猜测是,
static
被用作强制正确使用中断处理程序的一种方式,尽管我对此并不确定。也就是说,由于不能从其他文件调用静态函数,它会强制您传递指向它的指针,而不是直接调用它。谢谢您的回复。我得到了一些提示