一、概述
添加一个新的硬件设备,使应用层能响应该硬件的设备状态变化。
二、分析
(1)Kernel层
告诉操作系统该硬件所占用的中断号,注册中断,定义中断处理程序。这样系统就能支持该设备的中断。
1.注册中断
该函数执行后生成设备文件和及其节点。
2.中断服务程序
在中断服务程序中检测硬件是否出现变化,如果出现变化,则重新设置设备文件节点的值。
(2)Java层
1.UEvent可以跟Kernel进行通信,当添加新设备时,应该为该设备创建一个继承 UEventObserver抽象类来实现UEvent机制。
2.startObserving启动监听进程,传入的字符串用来标识要被监听的UEvent的设备文件。
3.重写onUEven函数,当指定的设备文件UEvent发生时,如果匹配则执行onUEvent处理函数。因为我们的目标是在设备状态发生变化时通知应用层,所以应该在处理函数中广播一个该设备状态的消息。
三、定义明晰
1.中断:
由于某个事件的发生,CPU暂停当前正在执行的程序,转而执行处理该事件的一个程序。该程序执行完成后,CPU接着执行被暂停的程序。这个过程称为中断。
例如,系统处理浏览网页的事情时(CPU暂停当前正在执行的程序),检测插拔耳机的硬件变化,此时会出发一个耳机中断的处理(转而执行处理该事件的一个程序),当耳机中断处理完成后,CPU接着处理浏览网页的事情(执行被暂停的程序)。
CPU要处理很多不同的事情,引入中断机制是为了提高CPU的并发处理能力,使它能切换处理不同的事情。
2.系统添加新硬件设备
告诉操作系统该硬件所占用的中断号,注册中断,定义中断处理程序。这样系统就能支持该设备的中断。
3.设备文件
Linux将外设看作一个文件来管理, 用户使用外设就像使用普通文件一样。
[参考]
http://blogold.chinaunix.net/u3/118873/showart_2363481.html
http://www.kerneltravel.net/journal/viii/01.htm