AIO_WAITN(3C) Standard C Library Functions AIO_WAITN(3C)
aio_waitn - wait for completion of asynchronous I/O operations
#include <aio.h>
int aio_waitn(struct aiocb *list[], uint_t nent,
uint_t *nwait, const struct timespec *timeout);
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.
Upon successful completion, aio_waitn() returns 0. Otherwise, it
returns -1 and sets errno to indicate the error.
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.
The aio_waitn() function has a transitional interface for 64-bit file
offsets. See lf64(7).
See attributes(7) for descriptions of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Committed |
+--------------------+-----------------+
|MT-Level | Safe |
+--------------------+-----------------+
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)
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)