request_irq和__interrupt之间的区别

6

根据我的阅读,两者都用于注册中断处理程序。我在内核代码中看到了很多request_irq的调用,但没有一个__interrupt的调用。那么__interrupt是一种从用户空间注册处理程序的方法吗?

2个回答

8

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


0
据我所记,__interrupt() 用于在用户空间中声明一个函数作为ISR。我不确定我从哪里得到这个信息,但我会尽快找到答案回复你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接