我将从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)
,与传统代码相比会有什么影响?结果会和遗留代码一样糟糕吗(可能有竞争条件),或者更糟?
在此先感谢您的建议。