为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕的地8271018 2021-04-13 17:09:09
我正在阅读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中读取字符。


查看完整回答
反对 回复 2021-04-16
  • 1 回答
  • 0 关注
  • 523 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信