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