不同驱动程序共享的中断行是否可以使用不同的中断处理程序?例如,这样的事情会成为可能吗?
on driver1:request_irq(irq, &handler1, IRQF_SHARED,"dev1", dev1);
on driver2:request_irq(irq, &handler2, IRQF_SHARED,"dev2", dev2);
答案 0 :(得分:0)
如果想要共享此IRQ的所有驱动程序都通过IRQF_SHARED
请求它,则此方法有效 - 如果只有其中一个不设置该标记,即只想要IRQ,你的request_irq
将会失败。
另一个先决条件是你的处理程序需要能够从硬件中以某种方式识别它是否是他的设备触发了IRQ。这决定了处理程序的返回值。
内核将按顺序调用所有共享IRQ的处理程序,直到找到实际处理它的处理程序。