Input子系统

注册流程:
1、evdev_init

2、input_register_handler //注册evdev_handler,把 struct input_handler evdev_handler 加入到链表input_handler_list,并把input_dev_list中的struct input_dev与 struct input_handle evdev_handler绑定。

3、log:input_dev->name=fts_ts,input_dev->dev->init_name=(null),input_dev->dev->kobj->name=input1 //设备驱动中调用input_register_device之前的分配一个struct input_dev,也就是tp的驱动注册一个input设备input1

4、input_register_device //注册一个struct input_dev 设备,把struct input_dev加入到input_dev_list链表中,并把input_handler_list中的所有struct input_handler与此struct input_dev绑定

5、struct input_dev 与 struct input_handler绑定过程:
1)调用evdev.c 中的 evdev_connect,每注册一个struct input_dev 设备,都会分配一个struct evdev,且注册一个struct input_handler
2)log:evdev->dev.kobj.name=event1, evdev->handle.name=event1
3)input_register_handle:把struct input_handle 放到struct input_dev和struct input_handler管理的链表中

上报数据流程:
1、input_report_abs
2、input_event
3、input_handle_event
4、input_pass_values
5、input_to_handler
6、evdev_events
7、evdev_pass_values
8、__pass_event
9、kill_fasync(&client->fasync, SIGIO, POLL_IN);

Input子系统_第1张图片 注册流程中重要结构体的关系

你可能感兴趣的:(KERNEL)