猿问

多个驱动程序可以注册以在Linux中处理同一设备吗

我正在阅读Robert Love的Linux Kernel Development,目前正在阅读Linux中的中断处理。它提到驱动程序可以使用以下函数注册处理硬件设备,其中最后一个参数dev对设备而言是唯一的。这是否意味着我们不能有两个服务于同一硬件设备的设备驱动程序?如果我想实现可与现有驱动程序一起使用的键盘驱动程序,那是不可能的吗?我是否需要注销现有的键盘驱动程序并注册我编写的驱动程序?


int request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, 

const char *name, void *dev) 


慕的地8271018
浏览 524回答 1
1回答

哔哔one

在某些情况下,驱动程序之间共享中断请求线。在这种情况下,驱动程序会在标志中提供IRQF_SHARED并在调用request_irq()时提供唯一的dev值。当硬件提供一个用于多个硬件组件的中断时,设备驱动程序通常共享中断,每个组件都有自己的驱动程序。在这种情况下,硬件还将为每个组件提供中断状态和屏蔽位。我对您的键盘硬件一无所知,因此很难说是否可以同时使用两个设备驱动程序。如果您所需要的只是对设备的读取访问权,而其他驱动程序未更改设备状态,则它可能会起作用。例如,在两个驱动程序之间共享UART绝对是行不通的,因为只有一个驱动程序将能够从RX FIFO中读取字符。
随时随地看视频慕课网APP
我要回答