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结构交给用户空间。

  • 相关阅读:
    UVA 10828
    素数推断算法(高效率)
    POJ1611 The Suspects (并查集)
    Android AES加密算法及事实上现
    C语言中的内存对齐
    OpenCV——老照片效果
    uuid 学习
    OpenCV——PS 滤镜, 浮雕效果
    加密算法之BLOWFISH算法
    OpenCV——照亮边缘
  • 原文地址:https://www.cnblogs.com/d442130165/p/5269922.html
Copyright © 2011-2022 走看看