NAME
aio_return() — return status of an asynchronous I/O operation
SYNOPSIS
#include <aio.h>
ssize_t aio_return(struct aiocb *aiocbp);
DESCRIPTION
The
aio_return()
function returns the return status associated with the
aiocb
structure referenced by the
aiocbp
argument.
The return value for
an asynchronous I/O operation is the value that would be set by the
corresponding
read(),
write(),
or
fsync()
operation.
If the operation has been queued but not completed,
aio_return()
returns
-1
and
errno
is set to
EINPROGRESS.
A successful
aio_return()
call frees all kernel resources associated with the calls
aiocb
referenced by
aiocbp.
To use this function, link in the realtime library by specifying
-lrt
on the compiler or linker command line.
RETURN VALUE
If the
aiocb
is invalid or if no asynchronous I/O operation
is enqueued for the
aiocb,
aio_returns()
returns
-1
and
errno
is set to indicate the error.
Otherwise,
aio_return()
returns the error status of the referenced
aiocb.
See
aio_read(2),
read(2),
aio_write(2),
write(2),
aio_fsync(2),
fsync(2)
and
lio_listio(2)
for relevant error values.
ERRORS
If
aio_return()
detects one of the following error conditions,
errno
is set to the indicated value:
- [EINVAL]
The
aiocbp
is not a valid address within the process virtual address space.
- [EINVAL]
There was no asynchronous I/O operation enqueued for the referenced
aiocb.
EXAMPLE
The following code sequence illustrates using
aio_return()
to retrieve the error status of an
aio_read()
operation and free the
aiocb
for future re-use.
#include <fcntl.h>
#include <errno.h>
#include <aio.h>
char buf[4096];
int retval; ssize_t nbytes;
struct aiocb myaiocb;
bzero( &myaiocb, sizeof (struct aiocb));
myaiocb.aio_fildes = open( "/dev/null", O_RDONLY);
myaiocb.aio_offset = 0;
myaiocb.aio_buf = (void *) buf;
myaiocb.aio_nbytes = sizeof (buf);
myaiocb.aio_sigevent.sigev_notify = SIGEV_NONE;
retval = aio_read( &myaiocb );
if (retval) perror("aio_read:");
/* continue processing */
...
/* wait for completion */
while ( (retval = aio_error( &myaiocb) ) == EINPROGRESS) ;
/* free the aiocb */
nbytes = aio_return( &myaiocb);
SEE ALSO
aio_cancel(2),
aio_error(2),
aio_fsync(2),
aio_read(2),
aio_suspend(2),
aio_write(2),
fsync(2),
lio_listio(2),
read(2),
write(2),
aio(5).
STANDARDS CONFORMANCE
aio_return(): POSIX Realtime Extensions, IEEE Std 1003.1b