根据我的阅读,两者都用于注册中断处理程序。我在内核代码中看到了很多request_irq
的调用,但没有一个__interrupt
的调用。那么__interrupt
是一种从用户空间注册处理程序的方法吗?
request_irq
本质上是request_threaded_irq
的包装调用,后者分配IRQ资源并启用IRQ。这是从kernel/irq/manage.c
的注释块中简述的,第1239行。
基本上,如果您需要设置某种设备的中断处理,就要使用request_irq
。确保您正在工作的任何子系统没有为request_irq
提供封装器。例如,如果您正在开发设备驱动程序,请考虑使用devm_*
函数族自动管理细节,比如释放未使用的变量等。在kernel/irq/devres.c
中的第29行查看devm_request_threaded_irq
以获得更好的解释。其相应的调用(也是您最可能使用的)是devm_request_irq
。