ueabi、no
ne-eabi、
arm-eab
i、gnueabi
hf等的区别
(2388)
评论排行榜
1. input输
入子系统
(5)
2. SPI通信
协议(SPI
总线)学习
(2)
3. .hex文
件和.bin文
件的区别
(2)
4. Linux驱
动学习之什
么是驱动?
(1)
推荐排行榜
1. Linux设
备驱动模型
之platform
(平台)总线
详解(1)
2. C++标
准模板库
(STL)和
容器(1)
3. 三路快
速排序算法
(1)
Powered by 博客
园
55 struct mutex mutex;
56
57 unsigned int users;
58 bool going_away;
59
60 struct device dev; // 内置的device结构体变量
61
62 struct list_head h_list; // 用来挂接input_dev 设备连接的所有handle 的一个链表头
63 struct list_head node; // 作为链表节点挂接到 input_dev_list 链表上 (input_dev_list链表是input核心层维护的一个用来挂
接所有input设备的一个链表头)
64 };
1 struct input_handler {
2
3 void *private; // 私有数据
4
5 void (*event)(struct input_handle *handle, unsigned int type, unsigned int code, int value); // handler用于向上层上
报输入事件的函数
6 bool (*filter)(struct input_handle *handle, unsigned int type, unsigned int code, int value);
7 bool (*match)(struct input_handler *handler, struct input_dev *dev); // match 函数用来匹配handler 与
input_dev 设备
8 int (*connect)(struct input_handler *handler, struct input_dev *dev, const struct input_device_id *id); // 当
handler 与 input_dev 匹配成功之后用来连接
9 void (*disconnect)(struct input_handle *handle); // 断开handler 与 input_dev 之间的连接
10 void (*start)(struct input_handle *handle);
11
12 const struct file_operations *fops; // 一个file_operations 指针
13 int minor; // 该handler 的编号 (在input_table 数组中用来计算数组下标) input_table数
组就是input子系统用来管理注册的handler的一个数据结构
14 const char *name; // handler的名字
15
16 const struct input_device_id *id_table; // 指向一个 input_device_id 类型的数组,用来进行与input设备匹配时用到的信息
17
18 struct list_head h_list; // 用来挂接handler 上连接的所有handle 的一个链表头
19 struct list_head node; // 作为一个链表节点挂接到 input_handler_list 链表上(input_handler_list 链表是一个由上层
handler参维护的一个用来挂接所有注册的handler的链表头)
20 };
1 struct input_handle {
2
3 void *private; // handle 的私有数据
4
5 int open; // 这个也是用来做打开计数的
6 const char *name; // 该handle 的名字
7
8 struct input_dev *dev; // 用来指向该handle 绑定的input_dev 结构体
9 struct input_handler *handler; // 用来指向该handle 绑定的 handler 结构体
10
11 struct list_head d_node; // 作为一个链表节点挂接到与他绑定的input_dev ->hlist 链表上
12 struct list_head h_node; // 作为一个链表节点挂接到与他绑定的handler->hlist 链表上
13 };
1 struct input_device_id {
2
3 kernel_ulong_t flags; // 这个flag 表示我们的这个 input_device_id 是用来匹配下面的4个情况的哪一项
4 // flag == 1表示匹配总线 2表示匹配供应商 4表示匹配产品 8表示匹配版本
5 __u16 bustype;
6 __u16 vendor;
7 __u16 product;
8 __u16 version;
9
10 kernel_ulong_t evbit[INPUT_DEVICE_ID_EV_MAX / BITS_PER_LONG + 1];
11 kernel_ulong_t keybit[INPUT_DEVICE_ID_KEY_MAX / BITS_PER_LONG + 1];
12 kernel_ulong_t relbit[INPUT_DEVICE_ID_REL_MAX / BITS_PER_LONG + 1];
13 kernel_ulong_t absbit[INPUT_DEVICE_ID_ABS_MAX / BITS_PER_LONG + 1];
14 kernel_ulong_t mscbit[INPUT_DEVICE_ID_MSC_MAX / BITS_PER_LONG + 1];
15 kernel_ulong_t ledbit[INPUT_DEVICE_ID_LED_MAX / BITS_PER_LONG + 1];
16 kernel_ulong_t sndbit[INPUT_DEVICE_ID_SND_MAX / BITS_PER_LONG + 1];
17 kernel_ulong_t ffbit[INPUT_DEVICE_ID_FF_MAX / BITS_PER_LONG + 1];
18 kernel_ulong_t swbit[INPUT_DEVICE_ID_SW_MAX / BITS_PER_LONG + 1];
评论0