Man Linux: Main Page and Category List

NAME

       aio_read - asynchronous read from a file (REALTIME)

SYNOPSIS

       #include <aio.h>

       int aio_read(struct aiocb *aiocbp);

DESCRIPTION

       The  aio_read()  function  shall  read aiocbp->aio_nbytes from the file
       associated with  aiocbp->aio_fildes  into  the  buffer  pointed  to  by
       aiocbp->aio_buf.   The function call shall return when the read request
       has been initiated or queued to the file or device (even when the  data
       cannot be delivered immediately).

       If  prioritized  I/O  is supported for this file, then the asynchronous
       operation shall be submitted at a  priority  equal  to  the  scheduling
       priority of the process minus aiocbp->aio_reqprio.

       The  aiocbp  value  may  be  used  as  an  argument  to aio_error() and
       aio_return() in order to determine the error status and return  status,
       respectively,  of the asynchronous operation while it is proceeding. If
       an error condition is encountered during  queuing,  the  function  call
       shall  return  without  having  initiated  or  queued  the request. The
       requested operation takes place at the absolute position in the file as
       given by aio_offset, as if lseek() were called immediately prior to the
       operation with an offset equal to aio_offset  and  a  whence  equal  to
       SEEK_SET.  After  a  successful  call  to  enqueue  an asynchronous I/O
       operation, the value of the file offset for the file is unspecified.

       The aiocbp->aio_lio_opcode field shall be ignored by aio_read().

       The aiocbp argument points to an aiocb structure. If the buffer pointed
       to by aiocbp->aio_buf or the control block pointed to by aiocbp becomes
       an illegal address prior  to  asynchronous  I/O  completion,  then  the
       behavior is undefined.

       Simultaneous  asynchronous  operations  using  the  same aiocbp produce
       undefined results.

       If  synchronized  I/O  is  enabled  on   the   file   associated   with
       aiocbp->aio_fildes, the behavior of this function shall be according to
       the definitions of  synchronized  I/O  data  integrity  completion  and
       synchronized I/O file integrity completion.

       For  any  system  action that changes the process memory space while an
       asynchronous I/O is outstanding to the address range being changed, the
       result of that action is undefined.

       For regular files, no data transfer shall occur past the offset maximum
       established   in   the   open   file   description   associated    with
       aiocbp->aio_fildes.

RETURN VALUE

       The  aio_read()  function  shall  return  the value zero to the calling
       process if the I/O operation is  successfully  queued;  otherwise,  the
       function shall return the value -1 and set errno to indicate the error.

ERRORS

       The aio_read() function shall fail if:

       EAGAIN The requested asynchronous I/O operation was not queued  due  to
              system resource limitations.

       Each  of  the following conditions may be detected synchronously at the
       time of the call to aio_read(),  or  asynchronously.   If  any  of  the
       conditions  below  are  detected synchronously, the aio_read() function
       shall return -1 and set errno to the corresponding value. If any of the
       conditions  below are detected asynchronously, the return status of the
       asynchronous operation is set to  -1,  and  the  error  status  of  the
       asynchronous operation is set to the corresponding value.

       EBADF  The  aiocbp->aio_fildes  argument is not a valid file descriptor
              open for reading.

       EINVAL The file offset value implied  by  aiocbp->aio_offset  would  be
              invalid,   aiocbp->aio_reqprio   is   not   a  valid  value,  or
              aiocbp->aio_nbytes is an invalid value.

       In the case that the aio_read() successfully queues the  I/O  operation
       but  the operation is subsequently canceled or encounters an error, the
       return status of the  asynchronous  operation  is  one  of  the  values
       normally  returned  by the read() function call. In addition, the error
       status of the asynchronous  operation  is  set  to  one  of  the  error
       statuses  normally  set  by  the  read()  function  call, or one of the
       following values:

       EBADF  The aiocbp->aio_fildes argument is not a valid  file  descriptor
              open for reading.

       ECANCELED
              The  requested  I/O was canceled before the I/O completed due to
              an explicit aio_cancel() request.

       EINVAL The file offset value implied  by  aiocbp->aio_offset  would  be
              invalid.

       The    following   condition   may   be   detected   synchronously   or
       asynchronously:

       EOVERFLOW
              The file is a regular file, aiobcp->aio_nbytes is  greater  than
              0,  and  the starting offset in aiobcp->aio_offset is before the
              end-of-file and is at or beyond the offset maximum in  the  open
              file description associated with aiocbp->aio_fildes.

       The following sections are informative.

EXAMPLES

       None.

APPLICATION USAGE

       The  aio_read()  function  is part of the Asynchronous Input and Output
       option and need not be available on all implementations.

RATIONALE

       None.

FUTURE DIRECTIONS

       None.

SEE ALSO

       aio_cancel() , aio_error() , lio_listio() , aio_return() ,  aio_write()
       ,  close()  ,  exec()  ,  exit() , fork() , lseek() , read() , the Base
       Definitions volume of IEEE Std 1003.1-2001, <aio.h>

COPYRIGHT

       Portions of this text are reprinted and reproduced in  electronic  form
       from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
       -- Portable Operating System Interface (POSIX),  The  Open  Group  Base
       Specifications  Issue  6,  Copyright  (C) 2001-2003 by the Institute of
       Electrical and Electronics Engineers, Inc and The Open  Group.  In  the
       event of any discrepancy between this version and the original IEEE and
       The Open Group Standard, the original IEEE and The Open Group  Standard
       is  the  referee document. The original Standard can be obtained online
       at http://www.opengroup.org/unix/online.html .