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[].
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(3RT), aio_write(3RT), or lio_listio(3RT).
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(3RT) and aio_return(3RT), respectively.
|