[RFC PATCH v2 04/11] server: Attempt to complete I/O request immediately in recv_socket.
Zebediah Figura (she/her)
zfigura at codeweavers.com
Wed Jan 26 17:35:37 CST 2022
On 1/25/22 20:29, Jinoh Kang wrote:
> On 1/26/22 03:23, Zebediah Figura (she/her) wrote:
>> On 1/22/22 08:36, Jinoh Kang wrote:
>>> diff --git a/include/wine/afd.h b/include/wine/afd.h
>>> index efd5787e90a..1e26739229d 100644
>>> --- a/include/wine/afd.h
>>> +++ b/include/wine/afd.h
>>> @@ -37,6 +37,23 @@ struct afd_wsabuf_32
>>> # define WS(x) x
>>> #endif
>>> +
>>> +/* Used in the iosb.result field to indicate that the current socket I/O
>>> + * operation is in synchronous non-blocking mode. This value is normally
>>> + * transmitted via the APC_ASYNC_IO system APC call (with status STATUS_ALERTED)
>>> + * when the server gives the client a chance to complete the I/O synchronously
>>> + * before resuming the request as fully asynchronous I/O or failing it.
>>> + * If the I/O fails with EWOULDBLOCK and the iosb.result field is set to any
>>> + * other value, the client shall request the server to resume the asynchronous
>>> + * operation.
>>> + *
>>> + * The value (ULONG_PTR)-1 (the maximum value of ULONG_PTR) is chosen so that
>>> + * it will be least likely to be confused with "the number of bytes transferred
>>> + * so far." Any I/O operation that has made it to the maximum number of bytes
>>> + * shall complete immediately anyway.
>>> + */
>>> +#define AFD_WINE_IN_NONBLOCKING_MODE ((ULONG_PTR)-1)
>>> +
>>
>> Why add this instead of returning a separate field from the recv_socket request?
>
> It's not intended to be returned from recv_socket request.
>
>> This value is normally transmitted via the APC_ASYNC_IO system APC call (with status STATUS_ALERTED)
>> transmitted via the APC_ASYNC_IO system APC call (with status STATUS_ALERTED)
>> when the server gives the client a chance to complete the I/O synchronously
>
> Do you have any suggestion as to how to better pass the blocking/nonblocking flag to async_recv_proc()?
>
Okay, I see the problem. I guess the approach of reusing APC
infrastructure may not be as palatable after all.
I'll take a look at the series beginning with 224085; it looks
potentially better...
More information about the wine-devel
mailing list