作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
据我所知,两者都用于注册中断处理程序。我在内核代码中看到了很多 request_irq
调用,但甚至没有看到一个 __interrupt
调用。 __interrupt
是从用户空间注册处理程序的某种方式吗?
最佳答案
request_irq
本质上是对 request_threaded_irq
的包装调用,它分配 IRQ 资源并启用 IRQ。这是从 kernel/irq/manage.c
, Line #1239 中的注释 block 中解释的.
基本上,如果您需要为某种设备设置中断处理,您需要使用request_irq
。确保您正在使用的任何子系统还没有为 request_irq
提供包装器。即,如果您正在处理设备驱动程序,请考虑使用 devm_*
调用系列来自动管理细节,例如释放未使用的变量等。请参阅 Line #29 处的 devm_request_threaded_irq
在 kernel/irq/devres.c
中以获得更好的解释。它的等效调用(也是您最有可能使用的调用)是 devm_request_irq
。
关于c - request_irq 和 __interrupt 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6237266/
据我所知,两者都用于注册中断处理程序。我在内核代码中看到了很多 request_irq 调用,但甚至没有看到一个 __interrupt 调用。 __interrupt 是从用户空间注册处理程序的某种
我是一名优秀的程序员,十分优秀!