Kernel interface for Wine synchronization primitives

Damjan Jovanovic damjan.jov at gmail.com
Mon Jan 18 22:21:47 CST 2021


On Mon, Jan 18, 2021 at 2:42 AM Zebediah Figura <zfigura at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20210119/a7080368/attachment-0001.htm>


More information about the wine-devel mailing list