request_irq和__interrupt之间的区别

从我读的两个都用来注册中断处理程序。 我在内核代码中看到很多的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。 我不知道我从哪里得到这个信息,但是一旦我找到了这个地方,我会尽快回复你。