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()