| .TH aio_read 3 2002-09-12 "Linux 2.4" Linux AIO" |
| .SH NAME |
| aio_read \- Initiate an asynchronous read operation |
| .SH SYNOPSYS |
| .nf |
| .B #include <errno.h> |
| .sp |
| .br |
| .B #include <aio.h> |
| .sp |
| .br |
| .BI "int aio_read (struct aiocb *aiocbp)" |
| .fi |
| .SH DESCRIPTION |
| This function initiates an asynchronous read operation. It |
| immediately returns after the operation was enqueued or when an |
| error was encountered. |
| |
| The first |
| .IR "aiocbp->aio_nbytes" |
| bytes of the file for which |
| .IR "aiocbp->aio_fildes" |
| is a descriptor are written to the buffer |
| starting at |
| .IR "aiocbp->aio_buf" |
| . Reading starts at the absolute |
| position |
| .IR "aiocbp->aio_offset" |
| in the file. |
| |
| If prioritized I/O is supported by the platform the |
| .IR "aiocbp->aio_reqprio" |
| value is used to adjust the priority before |
| the request is actually enqueued. |
| |
| The calling process is notified about the termination of the read |
| request according to the |
| .IR "aiocbp->aio_sigevent" |
| value. |
| |
| .SH "RETURN VALUES" |
| When |
| .IR "aio_read" |
| returns, the return value is zero if no error |
| occurred that can be found before the process is enqueued. If such an |
| early error is found, the function returns |
| .IR -1 |
| and sets |
| .IR "errno". |
| |
| .PP |
| If |
| .IR "aio_read" |
| returns zero, the current status of the request |
| can be queried using |
| .IR "aio_error" |
| and |
| .IR "aio_return" |
| functions. |
| As long as the value returned by |
| .IR "aio_error" |
| is |
| .IR "EINPROGRESS" |
| the operation has not yet completed. If |
| .IR "aio_error" |
| returns zero, |
| the operation successfully terminated, otherwise the value is to be |
| interpreted as an error code. If the function terminated, the result of |
| the operation can be obtained using a call to |
| .IR "aio_return" |
| . The |
| returned value is the same as an equivalent call to |
| .IR "read" |
| would |
| have returned. |
| When the sources are compiled with |
| .IR "_FILE_OFFSET_BITS == 64" |
| this |
| function is in fact |
| .IR "aio_read64" |
| since the LFS interface transparently |
| replaces the normal implementation. |
| |
| .SH ERRORS |
| In the case of an early error: |
| .TP |
| .B EAGAIN |
| The request was not enqueued due to (temporarily) exceeded resource |
| limitations. |
| .TP |
| .B ENOSYS |
| The |
| .IR "aio_read" |
| function is not implemented. |
| .TP |
| .B EBADF |
| The |
| .IR "aiocbp->aio_fildes" |
| descriptor is not valid. This condition |
| need not be recognized before enqueueing the request and so this error |
| might also be signaled asynchronously. |
| .TP |
| .B EINVAL |
| The |
| .IR "aiocbp->aio_offset" |
| or |
| .IR "aiocbp->aio_reqpiro" |
| value is |
| invalid. This condition need not be recognized before enqueueing the |
| request and so this error might also be signaled asynchronously. |
| |
| .PP |
| In the case of a normal return, possible error codes returned by |
| .IR "aio_error" |
| are: |
| .TP |
| .B EBADF |
| The |
| .IR "aiocbp->aio_fildes" |
| descriptor is not valid. |
| .TP |
| .B ECANCELED |
| The operation was canceled before the operation was finished |
| .TP |
| .B EINVAL |
| The |
| .IR "aiocbp->aio_offset" |
| value is invalid. |
| .PP |
| .SH "SEE ALSO" |
| .BR aio(3), |
| .BR aio_cancel(3), |
| .BR aio_cancel64(3), |
| .BR aio_error(3), |
| .BR aio_error64(3), |
| .BR aio_fsync(3), |
| .BR aio_fsync64(3), |
| .BR aio_init(3), |
| .BR aio_read64(3), |
| .BR aio_return(3), |
| .BR aio_return64(3), |
| .BR aio_suspend(3), |
| .BR aio_suspend64(3), |
| .BR aio_write(3), |
| .BR aio_write64(3), |
| .BR errno(3), |