request_irq 和 __interrupt 之间的区别

发布于 2024-11-13 09:06:16 字数 135 浏览 6 评论 0 原文

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

From what I read both are used to register interrupt handlers. I saw lots of request_irq calls in kernel code but not even one __interrupt call. Is __interrupt some way to register a handler from user space?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

牵你手 2024-11-20 09:06:16

request_irq本质上是对request_threaded_irq的包装调用,它分配IRQ资源并启用IRQ。这是从 kernel/irq/manage.c 中的注释块转述的,第 1239 行

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

request_irq is essentially a wrapper call to request_threaded_irq, which allocates the IRQ resources and enables the IRQ. That's paraphrased from the comment block in kernel/irq/manage.c, Line #1239.

Basically, you want to use request_irq if you need to setup interrupt handling for a device of some kind. Make sure that whatever subsystem you are working in doesn't already provide a wrapper for request_irq, too. I.e., if you are working on a device driver, consider using the devm_* family of calls to auto-manage the minutiae, like freeing unused variables and such. See devm_request_threaded_irq at Line #29 in kernel/irq/devres.c for a better explanation. Its equivalent call (and the one you would most likely use) is devm_request_irq.

一萌ing 2024-11-20 09:06:16

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

As far as I remember __interrupt() is used to declare a function as ISR in userspace. I am not sure where I have this from but I'll come back to you as soon as I found the spot.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文