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