aio_waitcomplete
- wait for the next completion of an aio request
LIBRARY
Lb libc
SYNOPSIS
#include <aio.h> int
aio_waitcomplete (struct aiocb **iocbp struct timespec *timeout);
DESCRIPTION
The
aio_waitcomplete ();
system call waits for completion of an asynchronous I/O request.
Upon completion,
aio_waitcomplete ();
returns the result of the function and sets
Fa iocbp
to point to the structure associated with the original request.
If an asynchronous I/O request is completed before
aio_waitcomplete ();
is called, it returns immediately with the completed request.
If
Fa timeout
is a non-NULL pointer, it specifies a maximum interval to wait for a
asynchronous I/O request to complete.
If
Fa timeout
is a NULL pointer,
aio_waitcomplete ();
waits indefinitely.
To effect a poll, the
Fa timeout
argument should be non-NULL, pointing to a zero-valued timeval structure.
The
aio_waitcomplete ();
system call also serves the function of
aio_return (,);
thus
aio_return ();
should not be called for the control block returned in
Fa iocbp .
RETURN VALUES
If an asynchronous I/O request has completed,
Fa iocbp
is set to point to the control block passed with the original request,
and the status is returned as described in
read(2),
write(2),
or
fsync(2).
On failure,
aio_waitcomplete ();
returns
-1
sets iocbp to
NULL
and sets
errno
to indicate the error condition.
ERRORS
The
aio_waitcomplete ();
system call fails if:
Bq Er EINVAL
The specified time limit is invalid.
Bq Er EAGAIN
The process has not yet called
aio_read ();
or
aio_write (.);
Bq Er EINTR
A signal was delivered before the timeout expired and before any
asynchronous I/O requests completed.
Bq Er EWOULDBLOCK
Bq Er EINPROGRESS
The specified time limit expired before any asynchronous I/O requests
completed.