Linux输入子系统分析二

Linux输入子系统分析二

input输入子系统主要函数分析

各种注册函数:input_register_device,.input_register_handle,.input_register_handler
  1. input_register_device:用来注册一个输入设备
    int input_register_device(struct unput_dev *dev)
    主要功能:初始化一些默认值,将自己的device结构添加到Linux设备模型中。将input_dev添加到input_dev_list链表中,然后寻找合适的handler与input_handler配对,配对的核心函数是input_attach_handler
    1.1 input_attach_handler
    int input_attach_handler(struct input_dev *dev, struct input_handler *handler)
    主要功能:调用两个函数:配对函数input_match_device和处理函数connect
    1.1.1 input_match_device
    static const struct input_device_id *input_match_device(const struct input_device_id *id, struct input_dev *dev)
    主要功能:比较input_dev中的id和handler支持的id,存放在handler的id_table中
    首先看id->driver_info有没有设置,如果设置了说明他匹配所有的id,evdev就是这样的handler。然后根据id->flag来比较内容,如果都比较成功进入MATCH_BIT,这个宏是用来按位进行比较的,功能是比较所支持的事件类型,只有所有的位都匹配才返回成功。否则进入下一个id的比较。
    1.1.2 connect
    触摸屏的connect函数:evdev_connect
    static int evdev_connect(struct input_handler *handler,struct input_dev *dev,const struct input_device_id *id)
    主要功能:做配对后的善后工作,分配一个evdev结构体,并初始化相关成员,evdev结构体中有input_handle结构,初始化并注册之。

  2. input_register_handle:用来注册input_handle结构体
    int input_register_handle(struct input_handle *handle)
    主要功能:把一个handle结构体通过d_node链表项,分别链接到input_dev的h_list,input_handler的h_list上,以后通过这个h_list就可以遍历相关的input_handle

  3. input_register_handler:注册一个input_handler结构体
    int input_register_handler(struct input_handler *handler)
    主要功能:参照input_register_device

input_dev和input_handler关联图

这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值