Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么必须将中断处理程序函数标记为静态?_C_Linux_Linux Device Driver - Fatal编程技术网

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

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,可以调用它并将指针传递给处理程序。然后内核可以使用该

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

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

例如:

static irqreturn_t intr_handler(int irq, void *dev)
但为什么会这样呢?我怀疑这个函数是否会被内核调用,如果我们将它设为静态,那么内核将如何调用它?

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


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

谢谢您的回复。我得到了一些提示