[国嵌攻略][139][输入子系统原理分析]

输入子系统核心架构

1.设备驱动层

2.核心层

3.事件层

4.用户空间

 

输入设备注册

1.拿设备ID去匹配handler的ID,找到对应的handler(事件处理者)

最常用的handler是evdev_handler,相应的匹配表在evdev_ids中。如果设备的ID在事件驱动的ID表中,那么两者就匹配起来了。按键驱动在注册的时候,没有设定ID,所以是一个随机值。在evdev_ids匹配表中能匹配所有的ID,所以按键驱动就和evdev_handler建立起了联系。

2.调用handler的connect函数建立连接,创建设备文件。但是注册字符设备是在核心子系统初始化的时候,并且只创建了一个字符设备。以后创建的多个设备文件都与这一个字符设备连接起来。

 

事件上报

1.当事件出现时,会找到handler中的event函数来处理

2.event函数主要做的事是打包input_event结构,保存到buffer

3.当用户程序从设备文件中进行系统调用时,首先打开的是输入子系统初始化时实现的file_operations,但是这个这个操作集里面只有open调用。在该调用中,原有的file_operations会被handler中的file_operations替换,这样调用的就是匹配的handler的操作集合。然后把保存在buffer中的input_evnet结构交给用户空间。

转载于:https://www.cnblogs.com/d442130165/p/5269922.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值