【问题标题】:WaitForMultipleObjects equivalent in Linux kernelLinux 内核中的 WaitForMultipleObjects 等效项
【发布时间】:2018-08-13 05:53:38
【问题描述】:

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

WaitForSingleObject 可以替换为 wait_event_interruptible..

但是 WaitForMultipleObjects 呢?我看到他们在用户空间应用程序中使用 pthread_cond_wait 的帖子。 linux内核空间的替代品是什么..

感谢您的宝贵时间..

【问题讨论】:

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


【解决方案1】:

您安排好表示事件的多个代码路径在同一个等待队列上调用 wake_up()。 这将等效于带有 false WaitAll 的 WaitForMultipleObjects。

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

对于 WaitAll=true,继续等待,直到所有事件发生。

【讨论】:

    猜你喜欢
    • 2011-02-12
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多