KernelHandleSupport
Having support for handles in the kernel can speed up significantly a number of operations (like synchronization primitives) which seem to affect certain classes of applications, like games. Such an approach would probably fix the majority of performance related problems associated with the current wineserver implementation.
To make handle support acceptable to the kernel folks, it needs to be done the Unix way. That is, handles need to be mapped to file descriptors, and then file descriptor operations will have to be extended to support the entire set of operations that are supported under Windows on handles (e.g, WaitForMultipleObjects(), the ability to duplicate a handle across processes, etc.).
Here is a tentative TODO:
- Document on this page exactly what we need from the kernel POV
- Try to come up with some sort of interface. The kernel folks will most like change it, but we need a starting point.
- Run it by Ingo, just to make sure we're not too far away
- Determine if some of the features make sense on their own. This way we'll have an easier chance on getting stuff in the kernel. The downside is that it may be unusable to us if we don't get everything in.
- Come up with some sort of implementation
- Submit the patch to LKML, and hope for the best
TroyRollo has implemented an IPC mechanism (called LockBoxes) that may provide what is needed in the kernel here. It is implemented as a loadable module and provides access controlled places to store data and open files and includes locking and synchronization mechanisms.
