我正在通过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)
答案 0 :(得分:1)
在某些情况下,中断请求行在驱动程序之间共享。在这种情况下,驱动程序在标志中提供IRQF_SHARED,并在调用request_irq()时提供唯一的dev值。
当硬件提供用于硬件的多个组件的单个中断时,设备驱动程序通常共享中断,每个组件都有自己的驱动程序。在这种情况下,硬件还将为每个组件提供中断状态和屏蔽位。
我对您的键盘硬件一无所知,因此很难说您是否可以使用两个设备驱动程序。如果您只需要对设备进行读访问,并且设备状态不会被其他驱动程序更改,则可能会有效。
例如,在两个驱动程序之间共享UART肯定不会起作用,因为只有一个驱动程序能够从RX FIFO中读取字符。