gpt4 book ai didi

Linux 驱动程序 - 与用户空间共享一个 WaitHandle (-like)

转载 作者:太空宇宙 更新时间:2023-11-04 11:29:45 25 4
gpt4 key购买 nike

我有一个 Windows 设备驱动程序,我想移植到 Linux。

我们的用户空间应用程序经常需要等待驱动程序事件。这是我们在 Windows 上使用的机制:

  1. 应用程序创建一个 WaitHandle
  2. 应用程序通过 ioctl 将此 WaitHandle 提供给驱动程序
  3. 驱动程序可以使用 ObReferenceObjectByHandle 访问此句柄并使用 KeSetEvent 设置它

我喜欢这个:

  • WaitHandle 可以来自任何地方(可以是 AutoReset 或 ManualReset,可以是 .Net WaitHandle 等)
  • 该进程不必使 ioctl 进入休眠状态,而只需调用通常的 WaitForSingleObject。

我想在我的 Linux 驱动程序中保持相同的体系结构。

有谁知道我如何在 Linux 上获得相同的行为?

最佳答案

一个简单的想法是创建一个阻塞读取的字符设备。用户应用程序从设备读取;这样的读取会阻塞,直到事件发生。

编辑:

另一个想法是send signal to userspace application其处理程序将设置用户空间等待句柄(可能是 futex)。

关于Linux 驱动程序 - 与用户空间共享一个 WaitHandle (-like),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12105057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com