我將從Linux 3.14移植到4.1的遺留代碼。有幾十個電話來sleep_on()
功能,我需要轉換爲調用wait_event()
功能:從sleep_on()到wait_event()?
wait_event(wq, condition);
wait_event_interruptible(wq, condition);
wait_event_timeout(wq, condition, timeout);
wait_event_interruptible_timeout(wq, condition, timeout);
的sleep_on()
功能在內核3.15被刪除,因爲它們會導致競爭條件。
我的問題是需要花費很多時間才能理解使用sleep_on()
函數並進行適當更改和測試等的棘手代碼,我需要儘快發佈至少一個原型。並考慮我是一個Linux設備驅動程序新手。
您是否知道我可以用來通過調用wait_event()
函數來替換對sleep_on()
函數調用的模式?例如,如果我只用wait_event(wait_queue, false)
替換sleep_on(&wait_queue)
,與傳統代碼相比會有什麼影響?結果會和遺留代碼一樣糟糕嗎(可能有競爭條件),或者更糟?
在此先感謝您的建議。