我的问题是: 调用free_irq时会触发中断处理程序。我在内核消息中注意到调用了处理程序,但由于我们的设备没有请求中断,因此提示没有收到中断。 这是预期的行为吗?有人可以帮忙吗?
答案 0 :(得分:1)
当您为(可能的)共享中断(使用IRQF_SHARED)注册处理程序时,中断可以由您的驱动程序无法控制的其他设备触发,因此您的驱动程序必须随时准备接收中断
为了帮助调试驱动程序,内核将(设置CONFIG_DEBUG_SHIRQ时)伪造一些中断以检查驱动程序是否正常工作。
[source code]
答案 1 :(得分:0)
如果我理解你的帖子 - 你必须在调用free_irq()之前关闭硬件中的中断,然后在free_irq()时不会收到中断。