Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (HP-UX-11.11)
Apropos / Subsearch:
optional field

 aio_return(2)						       aio_return(2)

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

      #include <&lt&lt&lt;aio.h>&gt&gt&gt;

      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

      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

      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.

      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 <&lt&lt&lt;fcntl.h>&gt&gt&gt;
	   #include <&lt&lt&lt;errno.h>&gt&gt&gt;
	   #include <&lt&lt&lt;aio.h>&gt&gt&gt;
	   char buf[4096];
	   int retval; ssize_t nbytes;
	   struct aiocb myaiocb;
	   bzero( &&amp&amp&amp;myaiocb, sizeof (struct aiocb));

 Hewlett-Packard Company	    - 1 -   HP-UX Release 11i: November 2000

 aio_return(2)						       aio_return(2)

	   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( &&amp&amp&amp;myaiocb );
	   if (retval) perror("aio_read:");
	   /* continue processing */
	   /* wait for completion */
	   while ( (retval = aio_error( &&amp&amp&amp;myaiocb) ) == EINPROGRESS) ;
	   /* free the aiocb */
	   nbytes = aio_return( &&amp&amp&amp;myaiocb);

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

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

 Hewlett-Packard Company	    - 2 -   HP-UX Release 11i: November 2000