Asynchronous I/O control block
#include <aio.h>
struct aiocb {
  int             aio_fildes
  off_t           aio_offset
  volatile void  *aio_buf
  size_t          aio_nbytes
  int             aio_reqprio
  struct sigevent aio_sigevent
  int             aio_lio_opcode
}
- aio_fildes
 
- The file descriptor to use in an asynchronous I/O operation.
  
  | 
  The aio_* functions work with
  Transparent Distributed Processing; the file descriptor can be one that
  you've opened across Qnet.
  
  
  
   | 
 
 
- aio_offset
 
- The file offset.
 
- aio_buf
 
- A pointer to a buffer.
 
- aio_nbytes
 
- The length of a transfer.
 
- aio_reqprio
 
- The request priority offset.
 
- aio_sigevent
 
- A pointer to a
  sigevent
  structure that specifies the signal number and value.
 
- aio_lio_opcode
 
- The operation to be performed; one of the following:
  
- LIO_NOP — a
    lio_listio()
    element operation option indicating that no transfer is requested.
    
  
 
- LIO_NOWAIT — a lio_listio()
    synchronization operation indicating that the calling thread is to
    continue execution while the lio_listio() operation is
    being performed, and no notification is given when the
    operation is complete.
    
  
 
- LIO_READ — a lio_listio() element
    operation option requesting a read.
    
  
 
- LIO_WAIT — a lio_listio()
    synchronization operation indicating that the calling thread is to
    suspend until the lio_listio() operation is complete.
    
  
 
- LIO_WRITE — a lio_listio() element
    operation option requesting a write.
    
  
 
 
POSIX 1003.1 AIO
The first time you call an aio_* function, a thread pool
is created, making your process multithreaded if it isn't already.
The thread pool isn't destroyed until your process ends.
aio_cancel(),
aio_error(),
aio_fsync(),
aio_read(),
aio_return(),
aio_suspend(),
aio_write(),
lio_listio()