#if !defined ISO && !defined ISO99 && !defined ISO11
type {struct aiocb}

// Test elements of the AIO control struct.
element {struct aiocb} int aio_fildes
element {struct aiocb} off_t aio_offset
element {struct aiocb} {volatile void*} aio_buf
element {struct aiocb} size_t aio_nbytes
element {struct aiocb} int aio_reqprio
element {struct aiocb} {struct sigevent} aio_sigevent
element {struct aiocb} int aio_lio_opcode

constant AIO_CANCELED
constant AIO_NOTCANCELED
constant AIO_ALLDONE
constant LIO_WAIT
constant LIO_NOWAIT
constant LIO_READ
constant LIO_WRITE
constant LIO_NOP

function int aio_cancel (int, struct aiocb*)
function int aio_error (const struct aiocb*)
function int aio_fsync (int, struct aiocb*)
function int aio_read (struct aiocb*)
function ssize_t aio_return (struct aiocb*)
function int aio_suspend (const struct aiocb* const[], int, const struct timespec*)
function int aio_write (struct aiocb*)
function int lio_listio (int, struct aiocb *const[], int, struct sigevent*)

// POSIX in theory doesn't allow the header to be self contained but
// this was fixed later and we do not test for this here.
allow-header fcntl.h
allow-header signal.h
allow-header sys/types.h
allow-header time.h

allow aio_*
allow lio_*
allow AIO_*
allow LIO_*
allow *_t
#endif
