This patch implements asynchronous I/O on regular file objects.
It is against the current (02/01/02) CVS version of wine.
I know that async IO on regular files is pretty pointless at the moment,
but it's better to have it working as expected, I guess ...
The patch was successfully tested with a simple test program that checks
the sequence of scheduled reqeuests and file positioning via the
lpOverlapped->Offset and OffsetHigh fields.
server/file.c:
struct file: add two async_queue fields (read/write) for async IO.
create_file_for_fd(): Intialize async queues.
destroy_file(): destroy async queues.
file_poll_event(): invoke async requests for overlapped files.
file_queue_async(): implement the queue_async() method.
file_get_info(): return FD_TYPE_OVERLAPPED for overlapped files.
files/file.c:
FILE_AsyncReadService():
Use pread() for fd's that support seeking.
FILE_AsyncWriteService():
Use pwrite() for fd's that support seeking.
Regards
Martin
--
Martin Wilck Phone: +49 5251 8 15113
Fujitsu Siemens Computers Fax: +49 5251 8 20409
Heinz-Nixdorf-Ring 1 mailto:
[email protected]
D-33106 Paderborn
http://www.fujitsu-siemens.com/primergy