2
在我的設備驅動程序中,我使用的是wait_event_interruptible_timeout
。如何判斷超時是否發生?宏只在中斷返回錯誤碼,但超時不是中斷,所以返回「0」。告訴設備驅動程序超時是否發生了wait_event_interruptible_timeout
編輯:不知道如何告訴如果發生超時,但condition
習慣進行設置,因此這聽起來像答案。
在我的設備驅動程序中,我使用的是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的很好的描述。