多个驱动程序可以注册以在linux中处理相同的设备

时间:2018-05-09 05:17:55

标签: linux linux-kernel interrupt interrupt-handling

我正在通过Robert Love进行Linux内核开发,目前正在阅读Linux中的中断处理。它提到驱动程序可以使用以下函数注册处理硬件设备,其中最终的参数dev对于设备是唯一的w.r.t.这是否意味着我们无法为同一硬件设备提供两个设备驱动程序?如果我想实现一个与现有驱动程序一起使用的键盘驱动程序,是不是可能?我是否必须取消现有的键盘驱动程序并注册我写的那个?

int request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, 
const char *name, void *dev) 

1 个答案:

答案 0 :(得分:1)

在某些情况下,中断请求行在驱动程序之间共享。在这种情况下,驱动程序在标志中提供IRQF_SHARED,并在调用request_irq()时提供唯一的dev值。

当硬件提供用于硬件的多个组件的单个中断时,设备驱动程序通常共享中断,每个组件都有自己的驱动程序。在这种情况下,硬件还将为每个组件提供中断状态和屏蔽位。

我对您的键盘硬件一无所知,因此很难说您是否可以使用两个设备驱动程序。如果您只需要对设备进行读访问,并且设备状态不会被其他驱动程序更改,则可能会有效。

例如,在两个驱动程序之间共享UART肯定不会起作用,因为只有一个驱动程序能够从RX FIFO中读取字符。