Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP-UX Reference > A


HP-UX 11i Version 3: February 2007

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index


aio_return() — return status of an asynchronous I/O operation


#include <aio.h>

ssize_t aio_return(struct aiocb *aiocbp);


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.


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.


If aio_return() detects one of the following error conditions, errno is set to the indicated value:


The aiocbp is not a valid address within the process virtual address space.


There was no asynchronous I/O operation enqueued for the referenced aiocb.


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);


aio_return(): POSIX Realtime Extensions, IEEE Std 1003.1b

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 1983-2007 Hewlett-Packard Development Company, L.P.