目录:
一、休眠与唤醒
二、POLL机制
三、异步通知
四、阻塞与非阻塞
五、定时器
六、中断下部分tasklet
七、工作队列
八、中断的线程化处理
九、mmap基础知识
一、休眠与唤醒
概念:应用程序必须等待某个事件发生。
二、POLL机制
概念:使用休眠-唤醒的方式等待某个事件发生时,有一个缺点:等待的时间可能 很久。我们可以加上一个超时时间,这时就可以使用poll 机制。
不需要自己设置休眠,内核自动休眠。
具体操作:
三、异步通知
概念:APP不休眠,驱动程序有数据时主动通知APP,APP 收到信号后执行信息处理函数。
使用流程:
应用程序怎么去使用异步通知?如下图。
第一步,注册信号处理函数;
第二步,打开某个驱动程序;
第三步,将PID(应用程序进程号)告诉驱动程序;
第四步,设置驱动程序的flag,设置为FASYNC(启动异步通知);
第五步,应用程序做事情。
四、阻塞与非阻塞
概念:所谓阻塞,就是等待某件事情发生。比如调用read 读取按键时,如果没有按键数据则read 函数不会返回,它会让线程休眠等待。
使用poll 时,如果传入的超时时间不为0,这种访问方法也是阻塞的。使用poll 时,可以设置超时时间为0,这样即使没有数据它也会立刻返回,这就是非阻塞方式。
不使用信号:
方法一:
应用程序编程:
方法二:
应用程序编程:
方法一、二的驱动程序编程
五、定时器
概念:所谓定时器,就是闹钟,时间到后你就要做某些事。有2 个要素:时间、做事,换成程序员的话就是:超时时间、函数。
定时器时间:
六、中断下部分tasklet
七、工作队列(内核线程)
八、中断的线程化处理
九、mmap基础知识
一级列表:
二级列表:
什么是cache,什么是buffer?
但考虑到硬件响应,还要想到其他问题,如操作寄存器。
四种方法: