zoukankan      html  css  js  c++  java
  • [国嵌攻略][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结构交给用户空间。

  • 相关阅读:
    java8 list 删除元素 简单版
    java8 list 删除元素 结构复杂版
    xshell 连接 centos 中的 vi 配色
    Redis 运行出错
    电脑清理秘籍 [ 精心总结 ]
    团队项目之后的反思
    团队项目心得 [ 感想 ]
    团队项目心得 [ 第二阶段项目总结 ]
    团队项目心得 [ 第一阶段项目总结 ]
    《创新者》读书笔记
  • 原文地址:https://www.cnblogs.com/d442130165/p/5269922.html
Copyright © 2011-2022 走看看