输入子系统

输入子系统,顾名思义这自己是大神撸的一个系统。这个系统它不只把输入设备底层驱动的共性部分(好比注册设备,open、write等)编写成一个大集合 以供调用,并且把与底层相匹配的处理事件程序也完成了。因此你只须要用这些集合把相对应的底层驱动设置好后注册进系统就能够了,这样不只省去了不少事并且 保护了内核的统一。linux

首先咱们先设置好相应的驱动(这其中最主要仍是设置input_dev这个结构体和set_bit()等函数),而后注册。当输入事件发生时(按下 鼠标、点开显示屏),内核经过(input_report_...)函数向输入子系统报告发生的事件(其中这个函数最主要的部分仍是 input_event函数),而后经过输入子系统匹配到相应的处理事件中去,而经过这个处理事件函数咱们就能够链接到上层的应用中去,这就是大体的过程 了。函数

经过这个过程知道事件驱动一部分,输入子系统自己一部分和底层驱动三部分组成了输入子系统。而和上层有关的函数无非就是 open,write.read.close等,和底层有关的无非就是寄存器的操做等。这些在输入子系统其实一样适用,不过对输入子系统这个要更简单,因 为在事件处理部分咱们的linux大神已经帮你完成了,你只须要把相应的底层驱动匹配上去就行,因此咱们要作得就是完成底层驱动的部分,可是呢,对底层驱 动大神们怕你撸的仍是不够规范因此也把一些简单的接口给你,你只须要直接调用就能够了。。说是输入子系统,但我已经把这么明显的分离分层思想已经暴露出来 了。咱们把整个系统分层为上层应用----下层驱动(这就是分层)而后又把下层驱动分离为事件驱动和设备驱动(这就是分离)。.net

这只是输入子系统的主要部分,其余的部分同样。。code

一个例程:http://www.oschina.net/code/snippet_2241389_52566(只有部分注释)接口

相关文章
相关标签/搜索