Implementing aio_* and lio_* (async i/o) on Cygwin

Mark Geisert mark@maxrnd.com
Thu Mar 29 05:57:00 GMT 2018


Corinna Vinschen wrote:
> On Mar 19 22:53, Mark Geisert wrote:
>> Regardless of which file the code is in, I was thinking I should copy
>> syscalls.cc's pread() contents into aio_read(), for example, to start with.
>> Then add extra param(s) as needed to the fhandler method call as you
>> suggested.
>
> That's definitely ok.  When I was talking about pread/pwrite in our
> preliminary discussion on cygwin-patches, I was always talking about the
> fhandler_disk_file::pread and fhandler_disk_file::pwrite methods in
> fact, not the syscalls of the same name.  I'm sorry I was unclear there :}
[...]
> Looks like you're on the right track, just go ahead.  We can fix the
> finer details later.

OK, I've posted a 3-part patch set to cygwin-patches.  This is still a WIP so it 
doesn't yet include what's been decided above.  It currently queues async ops to 
cygthread worker threads.

I plan to update aio_read() and aio_write() to try to launch async ops inline, 
and only if they fail with ESPIPE would they be queued for worker thread action. 
  (E.g., ops on sockets or other devices without pread/pwrite support.)

I think parts 1 and 2 of the patch set are essentially finished, unless there 
are issues to be corrected.  But part 3 will need some more work done.
Thanks,

..mark



More information about the Cygwin-developers mailing list