fix for Lawson's CLOCAL problem
mike_mccormack at start.com.au
Mon Aug 20 21:12:28 CDT 2001
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 start.com.au
ph +82 16 430 0425
Get your free Australian email account at http://www.Looksmart.com.au
More information about the wine-devel