input子系统五:总结框架

input子系统五:总结框架

通过前面的学习,我们可以看到输入子系统可以分为三大块:input核心层、input handler层、input设备层

1、input核心层

input核心层的主要功能主要有以下几点:

1、提供函数接口比如:input设备和input handler的注册函数
2、申请和维护子系统需要的一些资源:设备链表和handler链表,以及初始化input子系统的文件资源
3、最终向用户空间上报事件

2、input handler层(多半都能用内核已经实现好的)

input handler层的功能主要有以下几点

1、提供输入设备和handler的连接函数,当设备注册时需要用这个函数来将input_dev和handler连接起来
2、提供事件处理函数,处理和这个handler相连的设备产生的事件并且上报到input核心层
3、提供用户空间的操作函数,也就是字符设备的fops,让用户能读写设备

3、input设备层(一般需要驱动工程师自己编写)

input设备层的功能主要有以下几点

1、从底层硬件设备采集事件信息
2、将采集到的事件信息上报至核心层处理

关于input设备、input handler和input 核心三者之间的关系

首先input 核心就像一个民政局,这时我们的 input_dev 调用了 input_register_device 说“老子要结婚,你帮我打扮一下,还要给我找个对象”,这时我们的核心层就会先给他打扮一下,准备一些必须的东西,比如能产生同步事件等等,然后就把他放到设备链表里input_dev_list,然后就去找到另外一条链表input_handler_list。

这条链表里面就是我们的handler,这时我们的核心层就会说“这里有个小伙子要找对象,不知道符合你们的要求不”,这时handler发话了“我们的要求都写好了,就放在那个id_table里面”,这时我们的核心层就找了个手下 input_match_device() 来看看符不符合要求,如果符合就会过来通知handler“精神小伙,不能错过啊”,这时我们的核心层就会调用handler 的 connect 函数来办一些符合handler乡俗的结婚仪式比如初始化设备、链表等等,最后发给他们一个本子也就是我们的 handle 让他们都把自己登记在这个本子上并且调用 input_register_handle() 注册结婚,并且这个本子会让设备和handler用各自的链表h_list记录下来,以后有什么事就可以通过这个本子找到对方。

有的同学可能注意到了,链表是可以存储一串数据的,那这个本子(handle)是不是有很多本,没错,内核中的明证局实行的是多夫多妻制,只要符合要求都可以结婚,但是一个本子(handle)只可以记录一对,不能记录多对,你没看到一个结婚证几个人公用的吧?

从这以后设备和handler就愉快的在一起了,设备要开始搞事了,他出去赚钱(收集事件),然后他就调用 input_event() 去民政局(input核心)把这些钱存起来,但是明证局不认识他赚的钱,这些钱必须通过他媳妇的手之后才能存起来,这时我们的结婚证(handle)就起作用了,他拿到input设备的h_list一个个找来handler,让他们来处理设备赚来的钱,这时就会调用handler的event函数,将我们设备赚来的钱转化成标准样式,然后存储起来,通知用户来读取。

水平有限,只能编到这里了!!!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值