AIO_WAITN(3C) Standard C Library Functions AIO_WAITN(3C)
NAME
aio_waitn - wait for completion of asynchronous I/O operations
SYNOPSIS
#include <aio.h>
int aio_waitn(
struct aiocb *list[],
uint_t nent,
uint_t *nwait,
const struct timespec *timeout);
DESCRIPTION
The
aio_waitn() function suspends the calling thread until at least the
number of requests specified by
nwait have completed, until a signal
interrupts the function, or if
timeout is not
NULL, until the time
interval specified by
timeout has passed.
To effect a poll, the
timeout argument should be non-zero, pointing to a
zero-valued
timespec structure.
The
list argument is an array of uninitialized I/O completion block
pointers to be filled in by the system before
aio_waitn() returns. The
nent argument indicates the maximum number of elements that can be placed
in
list[] and is limited to
_AIO_LISTIO_MAX = 4096.
The
nwait argument points to the minimum number of requests
aio_waitn() should wait for. Upon returning, the content of
nwait is set to the
actual number of requests in the
aiocb list, which can be greater than
the initial value specified in
nwait. The
aio_waitn() function attempts
to return as many requests as possible, up to the number of outstanding
asynchronous I/Os but less than or equal to the maximum specified by the
nent argument. As soon as the number of outstanding asynchronous I/O
requests becomes 0,
aio_waitn() returns with the current list of
completed requests.
The
aiocb structures returned will have been used in initiating an
asynchronous I/O request from any thread in the process with
aio_read(3C),
aio_write(3C), or
lio_listio(3C).
If the time interval expires before the expected number of I/O operations
specified by
nwait are completed,
aio_waitn() returns the number of
completed requests and the content of the
nwait pointer is updated with
that number.
If
aio_waitn() is interrupted by a signal,
nwait is set to the number of
completed requests.
The application can determine the status of the completed asynchronous
I/O by checking the associated error and return status using
aio_error(3C) and
aio_return(3C), respectively.
RETURN VALUES
Upon successful completion,
aio_waitn() returns 0. Otherwise, it returns
-1 and sets
errno to indicate the error.
ERRORS
The
aio_waitn() function will fail if:
EAGAIN There are no outstanding asynchronous I/O requests.
EFAULT The
list[],
nwait, or
timeout argument points to an address
outside the address space of the process. The
errno variable is
set to
EFAULT only if this condition is detected by the
application process.
EINTR The execution of
aio_waitn() was interrupted by a signal.
EINVAL The
timeout element
tv_sec or
tv_nsec is < 0,
nent is set to 0
or >
_AIO_LISTIO_MAX, or
nwait is either set to 0 or is >
nent.
ENOMEM There is currently not enough available memory. The application
can try again later.
ETIME The time interval expired before
nwait outstanding requests
have completed.
USAGE
The
aio_waitn() function has a transitional interface for 64-bit file
offsets. See
lf64(7).
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Committed |
+--------------------+-----------------+
|MT-Level | Safe |
+--------------------+-----------------+
SEE ALSO
aio_error(3C),
aio_read(3C),
aio_return(3C),
aio_write(3C),
lio_listio(3C),
aio.h(3HEAD),
attributes(7),
lf64(7) December 18, 2008
AIO_WAITN(3C)