我有一个想移植到 Linux 的 Windows 设备驱动程序。
我们的用户空间应用程序经常需要等待驱动事件。这是我们在 Windows 上使用的机制:
- 应用程序创建一个 WaitHandle
- 应用程序通过 ioctl 将此 WaitHandle 提供给驱动程序
- 驱动程序可以使用 ObReferenceObjectByHandle 访问此句柄并使用 KeSetEvent 设置它
我喜欢这个:
- WaitHandle 可以来自任何地方(可以是 AutoReset 或 ManualReset,可以是 .Net WaitHandle 等)
- 该进程不必使 ioctl 进入睡眠状态,而只需调用通常的 WaitForSingleObject。
我想在我的 Linux 驱动程序中保持相同的架构。
有谁知道我如何在 Linux 上获得相同的行为?