Linux内核中的WaitForMultipleObjects等效项

时间:2018-08-13 05:53:38

标签: linux linux-kernel event-handling linux-device-driver sleep

有人试图将Windows驱动程序代码移植到Linux,并试图将WaitForMultipleObjects API替换到Linux。

WaitForSingleObject可以替换为wait_event_interruptible。

但是,WaitForMultipleObjects呢?。我看到他们在其中将pthread_cond_wait用于用户空间应用程序。 linux内核空间的替代方案是什么。

谢谢您的时间。

1 个答案:

答案 0 :(得分:1)

进行安排,以便表示事件的多个代码路径在同一等待队列上调用ake_up()。 这将等同于带有错误的WaitAll的WaitForMultipleObjects。

如何知道发生了哪个事件:一种可能性是使用带有一个鲜为人知的“ key”参数的唤醒变体:wake_up_poll()及其朋友。参见linux/wait.h。每个事件的“键”参数都应该是唯一的。然后,定制等待队列的唤醒处理程序功能(类型为wait_queue_func_t)。它接受四个参数。 “键”是最后一个,默认处理程序未使用。 “子类化”它,并使用“键” arg识别谁醒了。

对于WaitAll = true,请等待所有事件发生。