fix for Lawson's CLOCAL problem

Mike McCormack mike_mccormack at
Mon Aug 20 21:12:28 CDT 2001

Hi Alexandre,

Hmmm. i'm not exactly sure about this. i don't think the server ever
blocked on serial port reads or opens... i think the reason Lawson had
problems was that the client thread was blocking in the overlapped
read code. (FILE_AsyncReadService in files/file.c)

If we use non-blocking fds unconditionally, a non overlapped ReadFile
may result in a busy loop in the client thread.

Additionally, overlapped read (and write) requests should fail unless
the handle is opened with FILE_FLAG_OVERLAPPED. There are programs
that depend on that behaviour (as reported by Eric Kohl, 3 Feb 2001 on
this list). This is another reason to propagate CreateFile's
attributes parameter into the wineserver.

Another question: do you think it would be possible to implement a
"write memory" message from the wineserver to the client? This message
would be carried over wait_fd and would be received by the client
asynchronously in wait_reply(). The message would contain a length,
address and data to be written. If this is possible, i could move
async i/o back into the server, keep it efficient and perhaps
implement CancelIo properly...


> The open on the server side must always be non-blocking, we cannot
> have the server block on anything. If there are cases where we need
> block on open, it will have to be done on the client side.

mailto:Mike_McCormack at
ph +82 16 430 0425

Get your free Australian email account at

More information about the wine-devel mailing list