从我读的两个都用来注册中断处理程序。 我在内核代码中看到很多的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行的 kernel/irq/devres.c
以获得更好的解释。 其等价的调用(以及最有可能使用的调用)是devm_request_irq
。
据我记得__interrupt()用于在用户空间中声明一个函数作为ISR。 我不知道我从哪里得到这个信息,但是一旦我找到了这个地方,我会尽快回复你。