On Mon, Jan 18, 2021 at 2:42 AM Zebediah Figura zfigura@codeweavers.com wrote:
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