I think it may be time for a little clarity about aoicb's.
From the Single Unix Specification:
 "The <aio.h> header shall define the aiocb structure
  which shall include AT LEAST the following members:
    int             aio_fildes     File descriptor.
    off_t           aio_offset     File offset.
    volatile void  *aio_buf        Location of buffer.
    size_t          aio_nbytes     Length of transfer.
int aio_reqprio Request priority offset. struct sigevent aio_sigevent Signal number and value.
    int             aio_lio_opcode Operation to be performed.
 "
The "AT LEAST" here means that
 - a portable program may rely on these members being present
 - a portable program MUST assume that an unknown number of
   additional members are also present
 - a portable program may freely copy such a record, but may
   only pass it to a library function if that function is
   expecting to initialise it

For asynchronous I/O, this means that
 - you can allocate an aiocb object
 - an aiocb passed to aio_suspend, aio_error,
   aio_return, or aio_cancel should have been
   filled in by aio_read or aio_write and should
   be EXACTLY THE SAME object, not a copy of it.


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to