Linux驱动程序 - 与用户空间共享WaitHandle(类似)

时间:2012-08-24 07:37:45

标签: linux events signals driver wait

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

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

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

    我喜欢这个:

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

    我想在我的Linux驱动程序中保留相同的架构。

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

1 个答案:

答案 0 :(得分:1)

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

修改

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