如何检测设备驱动程序的中断处理例程?

问题描述:

我正在使用Linux平台在嵌入式设备中进行编程。如何检测设备驱动程序的中断处理例程?

有没有办法让内核模块检测到另一个设备驱动模块的中断处理程序?

例如,我有一个内核模块(.ko),那么我希望这个内核模块检测一个特定的设备驱动程序是否执行它的中断处理例程?

这可能吗?

非常感谢。

最简单的方法是修改设备驱动程序以允许您的模块注册回调,设备驱动程序在其中断例程或类似过程中调用该回调。

+0

你的意思是设备驱动程序的中断程序将调用回调函数? – domlao 2010-06-09 01:35:00

+0

这是一种可能性,但这取决于你需要做什么。更好的设计可能是让中断例程通过工作队列来调度回调,尽管在这种情况下会有更高的延迟。 – caf 2010-06-09 01:46:37

还有一个选项可以尝试:中断共享。
您可以在两个驱动程序的request_irq()中使用相同的中断和适当的参数。

+0

标志:'SA_SHIRQ',不确定dev_id不是NULL。 – 2011-03-08 12:30:18