[PATCH v7 1/2] ntdll/socket: Implement exclusive flag for IOCTL_AFD_POLL.

Zebediah Figura zfigura at codeweavers.com
Tue Sep 7 11:05:37 CDT 2021


On 9/7/21 12:01 AM, Guillaume Charifi-Hoareau wrote:
>> On 9/6/21 12:47 PM, Guillaume Charifi wrote:
>>> Signed-off-by: Guillaume Charifi <guillaume.charifi at sfr.fr>
>>> ---
>>>    dlls/ntdll/unix/socket.c |  6 ++---
>>>    include/wine/afd.h       |  2 +-
>>>    server/protocol.def      |  1 +
>>>    server/sock.c            | 52 ++++++++++++++++++++++++++++++++++++++--
>>>    4 files changed, 55 insertions(+), 6 deletions(-)
>>>
>>
>> Based on your description [1], it seems to me like it'd be easier just
>> to save the "main" poll request as a poll_req field in the relevant
>> socket. Then your poll_handle_exclusive() can pretty much do exactly
>> what you describe in that mail:
>>
>> if (sock->main_poll && sock->main_poll->exclusive && req->exclusive)
>>       // terminate it
>> if (!sock->main_poll)
>>       sock->main_poll = req;
>>
>> Of course the problem is, we can't do this yet, because cancel_async can
>> terminate the async behind our back. I wrote [2] for a different
>> purpose, but if accepted, it'd help here as well.
> 
> 
> Yeah, I didn't do it because I wasn't sure the referenced handles would still be valid at the
> time the function would get called...
> This would definitely help.
> 
> 
>>
>> In lieu of [2], though, it'd at least be nice to see a helper function
>> like "get_main_poll", to avoid that goto and boolean variable.
> 
> 
> Agreed.
> 
> 
>>
>> I don't like the name "main_poll", but I'm hard-pressed to come up with
>> something better. "exclusive_poll" perhaps, but it's not guaranteed to
>> actually be exclusive...
> 
> 
> Me neither, what do you think of "pinned_poll"?

I'm not sure it's an improvement, although it doesn't seem much if at 
all worse...

Ultimately it's hard to name something whose purpose is completely 
undocumented and makes no sense :-(

> 
> 
>>
>> [1] https://www.winehq.org/pipermail/wine-devel/2021-September/194463.html
>>
>> [2] https://source.winehq.org/patches/data/213505
> 



More information about the wine-devel mailing list