LINUX设备驱动——输入子系统

输入子系统是所有I/O设备驱动的中间层,如何为下层众多各式各样的输入设备提供接口以及为上层提供了一个统一的界面?

       根据内核代码,输入子系统中存在两个链表:input_dev_list、input_handler_list,当注册一个input_dev时就会把它挂到input_dev_list上,然后去匹配input_handler_list上的input_handler,相反,当注册一个input_handler时就会把它挂到input_handler_list上,然后去匹配input_dev_list上的input_dev,匹配成功时就会调用该handler的connect函数,该函数一般会创建和注册一个input_handle,这个input_handle中包含了input_dev和input_handler相关的信息,这样当下层向输入子系统上报事件时就可以通过input_handle找到相应的input_handler并调用相关函数,进一步为上次提供服务。

       如下图代表了input_dev,input_handler,input_handle,3者之间的关系。一类handler可以和多个硬件设备相关联,一个硬件设备可以和多个handler相关联。例如:一个触摸屏设备可以作为一个event设备,作为一个鼠标设备,也可以作为一个触摸设备,所以一个设备需要与多个平台驱动进行连接。而一个平台驱动也不只为一个设备服务,一个触摸平台驱动可能要为A,B,C3个触摸设备提供上层驱动,所以需要这样一对多的连接。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值