关于linux中断处理的基本问题
在我的驱动程序中,我禁用外设的中断线并进行一些处理,在此期间外设发送中断。当我启用中断线时,我收到了在此期间发生的待处理中断。
这是正确的理解吗?
如果是,我怎样才能丢弃在中断禁用期间出现的那些中断。
我可以实现一些使用延迟的工作,寻找linux API或干净的方法来做到这一点。
在启用中断之前,我们可以设置 desc = irq_to_desc(client-> irq); desc-> istate& = ~IRQS_PENDING; 并启用中断线它将清除所有挂起的中断,但代码说我们永远不应该修改这些变量。
谢谢
答案 0 :(得分:1)
可能我没理解,但我认为你必须做的是:
直接在设备上禁用中断而不使用内核中断处理例程
轮询您的设备,获取所有活动。可能你应该在线程中断处理程序
完成后重新启用设备上的中断