输入子系统(1):数据结构总结

本文详细介绍了Linux内核输入子系统的三层结构:设备驱动层、核心层和事件处理层,以及重要的数据结构,如input_dev、evdev和input_table。通过这些数据结构,设备驱动可以注册事件并上报给用户空间。后续章节将进一步解析相关代码以加深理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1:概述

输入子系统在linux内核中使用广泛,按键,鼠标,sensor类,touch等驱动都会用到输入子系统。输入子系统的结构分为以下三层:

1.1:设备驱动层

这一层需要用户在设备驱动中去实现,调用核心层的函数接口,完成输入设备的注册和并将发生的事件上报给子系统核心层;

1.2:输入子系统核心层

为驱动层和事件处理层提供函数接口,并且注册input字符设备,主设备号是13,次设备号为0~255,接受来自驱动层的上报事件,并最终通过事件处理层的接口,上报给用户,为设备驱动层和事件处理层架起一座桥梁;

1.3:事件处理层

实现了和用户层的接口,所有用户的操作都是通过事件处理层提供的接口进行;


2:输入子系统中重要的数据结构

2.1:input类数据结构:input_handle  input_handler  input_dev 

input_dev:代表一个输入设备,需要用户去填充并注册进内核,一个input_dev只能代表一个输入设备;

struct input_dev {
	const char *name;     //输入设备名字
	const char *phys;     //设备在系统中的物理路径
	const char *uniq;     //设备唯一标识符
	struct input_id id;   //设备ID,与input_handler匹配时会用到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值