linux-kernel – 对于共享中断行,如何找到要使用的中断处理程序?

linux-kernel – 对于共享中断行,如何找到要使用的中断处理程序?,第1张

概述对于共享中断线,我可以有几个中断处理程序.内核将按顺序调用该特定共享行的所有处理程序. 据我所知,每个处理程序在被调用时都会通知内核它是否是要调用的正确处理程序. 我的问题是如何确定,有没有办法检查一个内存映射寄存器,告诉特定设备的状态或是否有其他硬件机制?处理程序如何知道相应的设备确实是发出中断的设备? 这些信息是通过设备和处理器中断线之间的中断控制器进行中继的吗? 内核将按顺序调用该特定共享行 对于共享中断线,我可以有几个中断处理程序.内核将按顺序调用该特定共享行的所有处理程序.
据我所知,每个处理程序在被调用时都会通知内核它是否是要调用的正确处理程序.

我的问题是如何确定,有没有办法检查一个内存映射寄存器,告诉特定设备的状态或是否有其他硬件机制?处理程序如何知道相应的设备确实是发出中断的设备?

这些信息是通过设备和处理器中断线之间的中断控制器进行中继的吗?

解决方法 内核将按顺序调用该特定共享行的所有处理程序.

究竟.说Dev1和Dev2共享IRQ10.当为IRQ10生成中断时,将逐个调用在该行注册的所有ISR.

在我们的场景中,假设Dev2是产生中断的那个.如果首先注册Dev1的ISR,则首先调用它的ISR(即Dev1的ISR).在该ISR中,将验证中断状态寄存器的中断.如果没有设置中断位(这种情况,导致Dev2引发中断),那么我们可以确认Dev1没有产生中断 – 所以Dev1的ISR应该返回内核IRQ_NONE – 这意味着:“我没有处理那个中断“,所以内核继续下一个ISR(即Dev2的ISR),反过来,它确实会验证它的相应设备是否产生了中断,因此,这个处理程序应该处理它并最终返回IRQ_HANDLED – 这意味着:”我处理了这个”.

有关更多信息,请参阅返回值IRQ_NONE/IRQ_HANDLED.

处理程序如何知道相应的设备是否发出了中断?

通过仅读取中断状态寄存器.

这些信息是通过设备和处理器中断线之间的中断控制器进行中继的吗?

我不确定这个.但 *** 作系统将负责根据ISR的返回值调用ISR.

总结

以上是内存溢出为你收集整理的linux-kernel – 对于共享中断行,如何找到要使用的中断处理程序?全部内容,希望文章能够帮你解决linux-kernel – 对于共享中断行,如何找到要使用的中断处理程序?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1049765.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存