Windows NT synchronization primitives driver for the Linux kernel proposed

The Wine project emulates the Windows API in user space. One particular part of that API, namely the NT synchronization primitives, have historically been implemented via RPC to a dedicated “kernel” process. However, more recent applications use these APIs more strenuously, and the overhead of RPC has become a bottleneck.

The NT synchronization APIs are too complex to implement on top of existing primitives without sacrificing correctness. Certain operations, such as NtPulseEvent() or the “wait-for-all” mode of NtWaitForMultipleObjects(), require direct control over the underlying wait queue, and implementing a wait queue sufficiently robust for Wine in user space is not possible. This proposed driver, therefore, implements the problematic interfaces directly in the Linux kernel.

Elizabeth Figura on the lkml

This proposed driver would yield some serious performance results.

6 Comments

  1. 2024-01-25 10:36 pm
    • 2024-01-26 2:53 am
  2. 2024-01-26 3:21 pm
  3. 2024-01-27 8:08 pm
    • 2024-01-27 8:47 pm
      • 2024-01-29 11:31 pm