一、app访问硬件的四种方式
1、查询机制:app不断查询硬件的状态
2、休眠-唤醒机制:app休眠等待硬件唤醒
这两者的代码区别就在于在调用open函数是是否传入O_NONBLOCK参数,如图所示
如果使用非阻塞的方式打开设备,read硬件的时候,只会读一次没有数据就返回失败。使用阻塞的方式打开设备之后,read会一直阻塞直到设备有数据传来时,退出休眠。
3、poll机制:app休眠一段时间等待硬件唤醒,时间过去了之后app继续工作
4、异步通知:app正常工作,硬件有消息会通知app
异步通知是通过信号量来实现的,app需要注册信号处理函数,设置信号类型,告诉内核当前进程号,使能信号,在硬件有消息时会执行信号处理函数的代码。