[RFC PATCH v4 3/5] server: Attempt to complete I/O request immediately in recv_socket.
Zebediah Figura
zfigura at codeweavers.com
Wed Feb 2 17:45:32 CST 2022
On 1/29/22 01:47, Jinoh Kang wrote:
> diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c
> index 442243d8bcf..4cb30479322 100644
> --- a/dlls/ntdll/unix/sync.c
> +++ b/dlls/ntdll/unix/sync.c
> @@ -2510,3 +2510,25 @@ NTSTATUS WINAPI NtWaitForAlertByThreadId( const void *address, const LARGE_INTEG
> }
>
> #endif
> +
> +/* Notify direct completion of async and close the wait handle if it is no longer needed.
> + * This function is a no-op (returns status as-is) if the supplied handle is NULL.
> + */
> +NTSTATUS notify_async( HANDLE *optional_handle, NTSTATUS status, ULONG_PTR information )
This function seems rather ambiguously named. Why not use the same name
as for the server request?
> +{
> + NTSTATUS ret;
> +
> + if (!*optional_handle) return status;
> +
> + SERVER_START_REQ( notify_async_direct_result )
> + {
> + req->handle = wine_server_obj_handle( *optional_handle );
> + req->status = status;
> + req->information = information;
> + ret = wine_server_call( req );
> + *optional_handle = wine_server_ptr_handle( reply->handle );
> + }
> + SERVER_END_REQ;
> +
> + return ret;
> +}
...
> diff --git a/server/protocol.def b/server/protocol.def
> index d79eca074a0..137e6c5a220 100644
> --- a/server/protocol.def
> +++ b/server/protocol.def
> @@ -1456,6 +1456,7 @@ enum server_fd_type
> @REPLY
> obj_handle_t wait; /* handle to wait on for blocking recv */
> unsigned int options; /* device open options */
> + int may_restart; /* May restart async? */
> @END
>
>
"may_restart" takes me a minute to realize what it actually means. Could
we just return the (non)blocking flag directly instead?
More information about the wine-devel
mailing list