summaryrefslogtreecommitdiffstats
path: root/man3/aio_write.3
diff options
context:
space:
mode:
Diffstat (limited to 'man3/aio_write.3')
-rw-r--r--man3/aio_write.3162
1 files changed, 162 insertions, 0 deletions
diff --git a/man3/aio_write.3 b/man3/aio_write.3
new file mode 100644
index 0000000..20b0349
--- /dev/null
+++ b/man3/aio_write.3
@@ -0,0 +1,162 @@
+'\" t
+.\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl)
+.\"
+.\" SPDX-License-Identifier: GPL-2.0-or-later
+.\"
+.TH aio_write 3 2023-07-20 "Linux man-pages 6.05.01"
+.SH NAME
+aio_write \- asynchronous write
+.SH LIBRARY
+Real-time library
+.RI ( librt ", " \-lrt )
+.SH SYNOPSIS
+.nf
+.B "#include <aio.h>"
+.PP
+.BI "int aio_write(struct aiocb *" aiocbp );
+.fi
+.SH DESCRIPTION
+The
+.BR aio_write ()
+function queues the I/O request described by the buffer pointed to by
+.IR aiocbp .
+This function is the asynchronous analog of
+.BR write (2).
+The arguments of the call
+.PP
+.in +4n
+.EX
+write(fd, buf, count)
+.EE
+.in
+.PP
+correspond (in order) to the fields
+.IR aio_fildes ,
+.IR aio_buf ,
+and
+.I aio_nbytes
+of the structure pointed to by
+.IR aiocbp .
+(See
+.BR aio (7)
+for a description of the
+.I aiocb
+structure.)
+.PP
+If
+.B O_APPEND
+is not set, the data is written starting at the
+absolute position
+.IR aiocbp\->aio_offset ,
+regardless of the file offset.
+If
+.B O_APPEND
+is set, data is written at the end of the file in the same order as
+.BR aio_write ()
+calls are made.
+After the call, the value of the file offset is unspecified.
+.PP
+The "asynchronous" means that this call returns as soon as the
+request has been enqueued; the write may or may not have completed
+when the call returns.
+One tests for completion using
+.BR aio_error (3).
+The return status of a completed I/O operation can be obtained
+.BR aio_return (3).
+Asynchronous notification of I/O completion can be obtained by setting
+.I aiocbp\->aio_sigevent
+appropriately; see
+.BR sigevent (7)
+for details.
+.PP
+If
+.B _POSIX_PRIORITIZED_IO
+is defined, and this file supports it,
+then the asynchronous operation is submitted at a priority equal
+to that of the calling process minus
+.IR aiocbp\->aio_reqprio .
+.PP
+The field
+.I aiocbp\->aio_lio_opcode
+is ignored.
+.PP
+No data is written to a regular file beyond its maximum offset.
+.SH RETURN VALUE
+On success, 0 is returned.
+On error, the request is not enqueued, \-1
+is returned, and
+.I errno
+is set to indicate the error.
+If an error is detected only later, it will
+be reported via
+.BR aio_return (3)
+(returns status \-1) and
+.BR aio_error (3)
+(error status\[em]whatever one would have gotten in
+.IR errno ,
+such as
+.BR EBADF ).
+.SH ERRORS
+.TP
+.B EAGAIN
+Out of resources.
+.TP
+.B EBADF
+.I aio_fildes
+is not a valid file descriptor open for writing.
+.TP
+.B EFBIG
+The file is a regular file, we want to write at least one byte,
+but the starting position is at or beyond the maximum offset for this file.
+.TP
+.B EINVAL
+One or more of
+.IR aio_offset ,
+.IR aio_reqprio ,
+.I aio_nbytes
+are invalid.
+.TP
+.B ENOSYS
+.BR aio_write ()
+is not implemented.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lbx lb lb
+l l l.
+Interface Attribute Value
+T{
+.na
+.nh
+.BR aio_write ()
+T} Thread safety MT-Safe
+.TE
+.sp 1
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+POSIX.1-2001.
+.SH NOTES
+It is a good idea to zero out the control block before use.
+The control block must not be changed while the write operation
+is in progress.
+The buffer area being written out
+.\" or the control block of the operation
+must not be accessed during the operation or undefined results may occur.
+The memory areas involved must remain valid.
+.PP
+Simultaneous I/O operations specifying the same
+.I aiocb
+structure produce undefined results.
+.SH SEE ALSO
+.BR aio_cancel (3),
+.BR aio_error (3),
+.BR aio_fsync (3),
+.BR aio_read (3),
+.BR aio_return (3),
+.BR aio_suspend (3),
+.BR lio_listio (3),
+.BR aio (7)