request_irq和__interrupt之间的区别

mon*_*uma 5 c linux kernel interrupt irq

从我读到的都用于注册中断处理程序.我request_irq在内核代码中看到了很多调用,但是甚至没有一个__interrupt调用.是否__interrupt有办法从用户空间注册处理程序?

Kum*_*mba 7

request_irq本质上是一个包装器调用request_threaded_irq,它分配IRQ资源并启用IRQ.这是从注释块转述kernel/irq/manage.c,线#1239.

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


小智 0

据我记得 __interrupt() 用于在用户空间中将函数声明为 ISR。我不知道我从哪里得到这个,但我一找到地方就会回来给你。