request_irq和__interrupt之间的区别

时间:2011-06-04 14:23:06

标签: c linux kernel interrupt irq

从我读到的内容都用于注册中断处理程序。我在内核代码中看到了很多request_irq个调用,但是甚至没有一个__interrupt调用。 __interrupt是否可以通过某种方式从用户空间注册处理程序?

2 个答案:

答案 0 :(得分:7)

request_irq本质上是对request_threaded_irq的包装调用,它分配IRQ资源并启用IRQ。这是从kernel/irq/manage.cLine #1239中的评论区块中解释的。

基本上,如果需要为某种设备设置中断处理,则需要使用request_irq。确保您正在使用的子系统还没有为request_irq提供包装器。即,如果您正在使用设备驱动程序,请考虑使用devm_*系列调用来自动管理细节,例如释放未使用的变量等。有关更好的说明,请参阅devm_request_threaded_irqLine #29kernel/irq/devres.c。它的等效调用(以及您最有可能使用的调用)是devm_request_irq

答案 1 :(得分:0)

据我所知,__ interrupt()用于在用户空间中将函数声明为ISR。我不确定我从哪里来,但是一旦找到了这个地点我就会回复你。