.TH aio_write 3 2002-09-12 "Linux 2.4" Linux AIO"
.SH NAME
aio_write  \-  Initiate an asynchronous write operation
.SH SYNOPSYS
.nf
.B #include <errno.h>
.sp
.br 
.B #include <aio.h>
.sp
.br
.BI "int aio_write (struct aiocb * aiocbp);"
.fi
.SH DESCRIPTION
This function initiates an asynchronous write operation.  The function
call immediately returns after the operation was enqueued or if before
this happens an error was encountered.

The first 
.IR "aiocbp->aio_nbytes"
bytes from the buffer starting at
.IR "aiocbp->aio_buf"
are written to the file for which
.IR "aiocbp->aio_fildes"
is an descriptor, starting 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.

When 
.IR "aio_write"
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"
to one of the following values.

.TP
.B EAGAIN
The request was not enqueued due to (temporarily) exceeded resource
limitations.
.TP
.B ENOSYS
The 
.IR "aio_write"
function is not implemented.
.TP
.B EBADF
The 
.IR "aiocbp->aio_fildes"
descriptor is not valid.  This condition
may 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_reqprio"
value is
invalid.  This condition may not be recognized before enqueueing the
request and so this error might also be signaled asynchronously.
.PP

In the case 
.IR "aio_write"
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 get using a call
to 
.IR "aio_return"
.  The returned value is the same as an equivalent
call to 
.IR "read"
would have returned.  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
When the sources are compiled with 
.IR "_FILE_OFFSET_BITS == 64"
, this
function is in fact 
.IR "aio_write64"
since the LFS interface transparently
replaces the normal implementation.
.SH "RETURN VALUES"
When 
.IR "aio_write"
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"
to one of the following values.
.SH ERRORS
.TP
.B EAGAIN
The request was not enqueued due to (temporarily) exceeded resource
limitations.
.TP
.B ENOSYS
The 
.IR "aio_write"
function is not implemented.
.TP
.B EBADF
The 
.IR "aiocbp->aio_fildes"
descriptor is not valid.  This condition
may 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_reqprio"
value is
invalid.  This condition may not be recognized before enqueueing the
request and so this error might also be signaled asynchronously.
.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_read(3),
.BR aio_read64(3),
.BR aio_return(3),
.BR aio_return64(3),
.BR aio_suspend(3),
.BR aio_suspend64(3),
.BR aio_write64(3),
.BR errno(3),
