我正在阅读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)
1 回答

哔哔one
TA贡献1854条经验 获得超8个赞
在某些情况下,驱动程序之间共享中断请求线。在这种情况下,驱动程序会在标志中提供IRQF_SHARED并在调用request_irq()时提供唯一的dev值。
当硬件提供一个用于多个硬件组件的中断时,设备驱动程序通常共享中断,每个组件都有自己的驱动程序。在这种情况下,硬件还将为每个组件提供中断状态和屏蔽位。
我对您的键盘硬件一无所知,因此很难说是否可以同时使用两个设备驱动程序。如果您所需要的只是对设备的读取访问权,而其他驱动程序未更改设备状态,则它可能会起作用。
例如,在两个驱动程序之间共享UART绝对是行不通的,因为只有一个驱动程序将能够从RX FIFO中读取字符。
- 1 回答
- 0 关注
- 523 浏览
添加回答
举报
0/150
提交
取消