写了7个版本的按键驱动:
1.查询法:在应用程序的while循环里不停的调用read函数读取按键值,太耗费CPU资源了。
2.中断发:同样是在一个while循环里不停的调用read函数读按键值,但是这个程序里用了个等待队列,没有按键按下时,调用read函数进程会休眠。当有按键按下时,在中断服务程序里会唤醒休眠的进程,从而读取到按键值。相对于查询法,耗费的CPU资源少了很多。
4.poll机制:也是在一个while循环里,调用poll函数查询下设备文件是否可读,如果不可读,就休眠一会儿,然后再来查询,如果设备文件可读,就调用read函数。
5.异步通知(信号机制):这个类似于QT里的信号与槽,当有按键按下时,产生中断,在中断服务函数里向应用程序发射信号,应用程序里收到这个信号后,执行相应的函数来处理。这种方式是最节省CPU资源的。
6.定时器消抖:这个就是内核定时器的应用,没啥好说的。