blob: 5bcb6c8a116b28a5eb32f55c5e3583b36f8f29c8 [file] [log] [blame]
.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),