关于linux中断处理的基本问题
在我的驱动程序中,我禁用了外围设备的中断线并进行了一些处理,在此期间外围设备正在发送中断。当我启用中断线时,我收到了那段时间发生的未决中断。
这个理解正确吗?
如果是,我如何丢弃在中断禁用期间出现的那些中断。
我可以使用一些延迟来解决一些问题,寻找 linux API 或干净的方法来执行此操作。
在启用中断之前我们可以设置 desc = irq_to_desc(客户端->irq); desc->istate &= ~IRQS_PENDING; 并启用中断线,它将清除所有挂起的中断,但代码表明我们永远不应该修改这些变量。
谢谢
最佳答案
可能是我不明白,但我认为你必须做的是:
直接在设备上禁用中断,不使用内核中断处理例程
轮询您的设备,获取所有事件。也许你应该在线程中断处理程序中执行此操作
完成后重新启用设备上的中断
关于linux - Linux 中的中断处理和挂起中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26275431/