app不知道驱动程序中是否有数据,可以调用 pol函数查询一下 ,poll函数可以传入超时时间app进入 内核态,调用 到驱动程序的poll函数,如果有数据的话立刻返回,如果发现没有数据时就休眠一段时间如果有数据时,比如按下按键,驱动程序的中断服务程序被调用,它会以记录灵气唤醒app当超时时间到了之后 ,内核也会唤醒 appapp根据pol函数的返回值就可以知道是否有数据,如果有数据就调用read得到 数据确定设备树已经修改成功安装驱动程序 确定生成了设备节点直接执行测试程序 ,查看用法执行测试程序 ,按下,松开按键,观察输出信息异步通知:你去买奶茶,你在旁边等着,眼睛盯着店员,生怕别人插队,他一做好你就 知道 :你主动等待他做好,这叫同步你付钱后去玩手机,店员做好后他会打电话告诉 你,你是被动 获得结果 ,这叫异步。驱动程序怎么通知app ,发信号 ,谁发 驱动程序 发信号 发什么信号 :SIGIO信号怎么发:内核里提供有函数发给谁:app app要把自己告诉驱动 app收到 后做什么,执行信号 处理函数信号处理函数和信号 之间是怎么挂钩的,app注册信号处理函数对app而言,要处理SIGIO信息,那么 需要提供信号处理函数,并且要跟SIGIO挂钩,可以通过signal函数来给某个信号处理函数app还要做什么事,内核里面有那么多勾魂 ,你想让哪王玉玲上驱动给你发sigio信号 ,app要打开驱动程序 的设备labhk驱动驱动程序 怎么知道 要发信号 给你而还是给别人,app要把自己的进程id告诉驱动程序 驱动要做什么 发信号,app设置进程idjf 驱动程序 要记录下进程idapp还要使能驱动程序 的异步通知功能,驱动程序 里面有对应 的函数app要设置进程id,驱动程序 要记录下进程id,app打开驱动程序时,内核会创建对应 的file结构体,file中有f_flags f_flags中有FASYNC位,它被 设置为1时表示使能异步通知功能 ,当f_flags中的FASYNC位发生变化 时,驱动程序 的fasync函数被调用 发生 中断 时,有数据时,驱动程序 调用 内核的辅助函数发信号 kill_fasyncapp收到 信号 后,怎么执行信号 处理函数app给sigio这个 信号注册信号 处理函数func,以后 app收到 sigi