linux中的中断处理和Pending中断

时间:2014-10-09 09:53:15

标签: linux linux-kernel linux-device-driver interrupt interrupt-handling

关于linux中断处理的基本问题

在我的驱动程序中,我禁用外设的中断线并进行一些处理,在此期间外设发送中断。当我启用中断线时,我收到了在此期间发生的待处理中断。

这是正确的理解吗?

如果是,我怎样才能丢弃在中断禁用期间出现的那些中断。

我可以实现一些使用延迟的工作,寻找linux API或干净的方法来做到这一点。

在启用中断之前,我们可以设置     desc = irq_to_desc(client-> irq);     desc-> istate& = ~IRQS_PENDING; 并启用中断线它将清除所有挂起的中断,但代码说我们永远不应该修改这些变量。

谢谢

1 个答案:

答案 0 :(得分:1)

可能我没理解,但我认为你必须做的是:

  • 直接在设备上禁用中断而不使用内核中断处理例程

  • 轮询您的设备,获取所有活动。可能你应该在线程中断处理程序

  • 中执行此操作
  • 完成后重新启用设备上的中断