
Linux input子系统,分为三篇文章,第一篇:Linux input子系统的概念,第二篇:Linux input子系统的代码分析(input core),第三篇:Linux input子系统的驱动程序编写。
linux系统输入设备繁多,例如按键、键盘、触摸屏、鼠标。这些输入设备都属于字符设备。不过这些输入设备不同类型,不同原理,不同的输入输出信息。那么是如何统一这些输入设备的呢?
答案:linux中将所有的输入设备抽象出input子系统这套软件体系,提供了统一的接口函数,实现了大统一。
input子系统分为三层:
1.输入子系统设备驱动层。
2.输入子系统核心层
3.输入子系统事件处理层
其中:
1.设备驱动层提供对硬件寄存器的读写访问和将底层硬件对用户输入访问的相应转换为标准的输入事件,在通过核心层提交给事件处理层。
2.核心层对下提供了设备驱动层的编程接口,对上提供了事件层的编程接口。
3.事件层为用户的应用程序提供了统一的设备访问接口,和驱动层提交的事件处理。

输入子系统使得我们输入设备的驱动部分不再关心对设备文件的操作,只需要关心对各个硬件寄存器的操作和提交相应的输入事件。
综上所述:在linux中,输入子系统作为一个内核模块存在,向上为用户层提供接口函数,向下为驱动程序提供统一的接口函数。这样对我们的构建驱动程序非常简单灵活,只需要调用一些简单的函数,就可以将一个输入设备的功能呈现给应用程序。这样就能够将输入设备的事件通过输入子系统发送给应用层的应用程序,应用程序也可以通过输入子系统通知驱动程序完成某些任务。

下一篇:Linux input子系统的代码分析(input core)