Hello all,
[As a bit of an aside, there are more types of synchronizable objects
than this, including e.g. processes and threads, which much like pidfd
are considered signaled when the process exits. However, these objects
are not thus far a performance concern, and can thus be implemented on
top of one of the objects above.]
Are you sure about that? What about the interaction between I/O and locks? Would it allow us to implement this FIXME in NtLockFile() in dlls/ntdll/unix/file.c:
if (apc_user && !warn++) FIXME("I/O completion on lock not implemented yet\n");
How are other APIs affected, eg. OVERLAPPED, I/O completion ports?
What about cases where there are multiple handle types combined, eg. WaitForMultipleObjects() on a network socket, a thread handle, and a lock? It would seem the application and/or the wineserver needs a way to poll both fds and locks?
That concludes my description and proposal; I'd love to hear your thoughts.
From what I remember, a long time ago, Cedega ported (or were working on porting) wineserver to the kernel for improved performance. Do we have any idea how that went?
It's an exciting idea :). It would be great to have "ntsync" on FreeBSD too. Can we please implement it under the BSD licence, or at least dual GPL/BSD?
ἔρρωσθε,
Zebediah Figura
(she/her)
Damjan Jovanovic