从我读到的内容都用于注册中断处理程序。我在内核代码中看到了很多request_irq
个调用,但是甚至没有一个__interrupt
调用。 __interrupt
是否可以通过某种方式从用户空间注册处理程序?
答案 0 :(得分:7)
request_irq
本质上是对request_threaded_irq
的包装调用,它分配IRQ资源并启用IRQ。这是从kernel/irq/manage.c
,Line #1239中的评论区块中解释的。
基本上,如果需要为某种设备设置中断处理,则需要使用request_irq
。确保您正在使用的子系统还没有为request_irq
提供包装器。即,如果您正在使用设备驱动程序,请考虑使用devm_*
系列调用来自动管理细节,例如释放未使用的变量等。有关更好的说明,请参阅devm_request_threaded_irq
中Line #29的kernel/irq/devres.c
。它的等效调用(以及您最有可能使用的调用)是devm_request_irq
。
答案 1 :(得分:0)
据我所知,__ interrupt()用于在用户空间中将函数声明为ISR。我不确定我从哪里来,但是一旦找到了这个地点我就会回复你。