[PATCH 12/16] server: Added support for message mode named pipes.

Jacek Caban jacek at codeweavers.com
Wed Oct 5 14:31:06 CDT 2016

Signed-off-by: Jacek Caban <jacek at codeweavers.com>

This is the most important patch in the series. It moves named pipe I/O
to server so that we may properly and portably support message mode. The
series is prepared in a way that makes this patch no-op for byte mode
named pipes. Although code would be much nicer if we moved them as well,
I believe that scope and impact of this change is already huge.

The biggest disadvantage of this change is performance. Server calls
will always be slower than plain syscalls. This patch intends to
implement proper results first and performance could be improved in
follow ups. Ideally a simple read()/write() with immediate result could
take only one server call. For that:
- ntdll handle cache will need to store information about server-side
pseudo fds, so that we don't need to call get_handle_fd just to get an
error every time we do read/write
- server calls could transfer the result directly when possible, instead
of using APCs. That requires handling overlapped events on client side.
Those shouldn't be too hard and I intend to look at them.

 dlls/kernel32/tests/pipe.c |  74 ++-----
 dlls/ntdll/file.c          |   7 +-
 dlls/ntdll/tests/file.c    |   2 +-
 server/async.c             |   9 +
 server/file.h              |   1 +
 server/named_pipe.c        | 497
 6 files changed, 503 insertions(+), 87 deletions(-)

-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0012-server-Added-support-for-message-mode-named-pipes.diff
Type: text/x-patch
Size: 43926 bytes
Desc: not available
URL: <http://www.winehq.org/pipermail/wine-patches/attachments/20161005/32fdd9e8/attachment-0001.bin>

More information about the wine-patches mailing list