在我的设备驱动程序中,我正在使用 wait_event_interruptible_timeout
。如何判断是否发生了超时?宏仅在中断时返回错误代码,但超时不是中断,因此返回“0”。
编辑:不确定如何判断超时是否发生,但是 condition
不会被设置,所以这听起来像是答案。
最佳答案
几周前,我在阅读 Linux Device Drivers, Third Edition 中对该函数的描述后遇到了同样令人困惑的问题。 .然而,在阅读当前内核源代码树中各种等待函数的注释后,我发现自本书出版以来 API 已经发生了变化。较新的内核(至少 2.6.34+ 并且可能比它更早)将剩余的 jiffies 数返回到超时而不是错误代码。因此,零返回值表示超时发生,任何非零值都应表示通过事件条件成功唤醒。 include/linux/wait.h
中的注释很好地描述了新的 API。
关于linux - 使用 wait_event_interruptible_timeout 判断设备驱动程序是否超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5884071/