有人试图将Windows驱动程序代码移植到Linux,并试图将WaitForMultipleObjects API替换到Linux。
WaitForSingleObject可以替换为wait_event_interruptible。
但是,WaitForMultipleObjects呢?。我看到他们在其中将pthread_cond_wait用于用户空间应用程序。 linux内核空间的替代方案是什么。
谢谢您的时间。
答案 0 :(得分:1)
进行安排,以便表示事件的多个代码路径在同一等待队列上调用ake_up()。 这将等同于带有错误的WaitAll的WaitForMultipleObjects。
如何知道发生了哪个事件:一种可能性是使用带有一个鲜为人知的“ key”参数的唤醒变体:wake_up_poll()
及其朋友。参见linux/wait.h
。每个事件的“键”参数都应该是唯一的。然后,定制等待队列的唤醒处理程序功能(类型为wait_queue_func_t
)。它接受四个参数。 “键”是最后一个,默认处理程序未使用。 “子类化”它,并使用“键” arg识别谁醒了。
对于WaitAll = true,请等待所有事件发生。