mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
177 lines
3.9 KiB
Plaintext
177 lines
3.9 KiB
Plaintext
.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),
|