发现问题的契机:
学习异步通知的时候,自己实现一个功能:按键控制蜂鸣器,同时LED灯在闪烁
结果:LED好像也同时被按键控制了
最后调试结果发现:
应用层的sleep被驱动层的kill_fasync打断,所以sleep没有执行完就重新进入下一次循环了
修改代码后解决该问题
解决逻辑就是:既然休眠函数会被打断,则让每次休眠的时间短一点
解释:
sleep函数是可以被中断的,也就是说当进程在睡眠的过程中,如果被中断,那么当中断结束回来再执行该进程的时候,该进程会从sleep函数的下一条语句执行。
说明kill_fasync这个函数中有中断发生。