1d5c710e6SSascha Wildner.\" Copyright (c) 1999 Softweyr LLC. 2d5c710e6SSascha Wildner.\" All rights reserved. 3d5c710e6SSascha Wildner.\" 4d5c710e6SSascha Wildner.\" Redistribution and use in source and binary forms, with or without 5d5c710e6SSascha Wildner.\" modification, are permitted provided that the following conditions 6d5c710e6SSascha Wildner.\" are met: 7d5c710e6SSascha Wildner.\" 1. Redistributions of source code must retain the above copyright 8d5c710e6SSascha Wildner.\" notice, this list of conditions and the following disclaimer. 9d5c710e6SSascha Wildner.\" 2. Redistributions in binary form must reproduce the above copyright 10d5c710e6SSascha Wildner.\" notice, this list of conditions and the following disclaimer in the 11d5c710e6SSascha Wildner.\" documentation and/or other materials provided with the distribution. 12d5c710e6SSascha Wildner.\" 13d5c710e6SSascha Wildner.\" THIS SOFTWARE IS PROVIDED BY Softweyr LLC AND CONTRIBUTORS ``AS IS'' AND 14d5c710e6SSascha Wildner.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15d5c710e6SSascha Wildner.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16d5c710e6SSascha Wildner.\" ARE DISCLAIMED. IN NO EVENT SHALL Softweyr LLC OR CONTRIBUTORS BE LIABLE 17d5c710e6SSascha Wildner.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18d5c710e6SSascha Wildner.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19d5c710e6SSascha Wildner.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20d5c710e6SSascha Wildner.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21d5c710e6SSascha Wildner.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22d5c710e6SSascha Wildner.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23d5c710e6SSascha Wildner.\" SUCH DAMAGE. 24d5c710e6SSascha Wildner.\" 25d5c710e6SSascha Wildner.\" $FreeBSD: src/lib/libc/sys/aio_write.2,v 1.4.2.5 2001/12/14 18:34:00 ru Exp $ 26d5c710e6SSascha Wildner.\" 27d5c710e6SSascha Wildner.Dd June 2, 1999 28d5c710e6SSascha Wildner.Dt AIO_WRITE 3 29d5c710e6SSascha Wildner.Os 30d5c710e6SSascha Wildner.Sh NAME 31d5c710e6SSascha Wildner.Nm aio_write 32d5c710e6SSascha Wildner.Nd asynchronous write to a file (REALTIME) 33d5c710e6SSascha Wildner.Sh LIBRARY 34d5c710e6SSascha Wildner.Lb librt 35d5c710e6SSascha Wildner.Sh SYNOPSIS 36d5c710e6SSascha Wildner.In aio.h 37d5c710e6SSascha Wildner.Ft int 38d5c710e6SSascha Wildner.Fn aio_write "struct aiocb *iocb" 39d5c710e6SSascha Wildner.Sh DESCRIPTION 40d5c710e6SSascha WildnerThe 41d5c710e6SSascha Wildner.Fn aio_write 42d5c710e6SSascha Wildnerfunction allows the calling process to write 43d5c710e6SSascha Wildner.Fa iocb->aio_nbytes 44d5c710e6SSascha Wildnerfrom the buffer pointed to by 45d5c710e6SSascha Wildner.Fa iocb->aio_buf 46d5c710e6SSascha Wildnerto the descriptor 47d5c710e6SSascha Wildner.Fa iocb->aio_fildes . 485fda1bb4SSascha WildnerThe function returns immediately after the write request has been enqueued 49d5c710e6SSascha Wildnerto the descriptor; the write may or may not have completed at the time 505fda1bb4SSascha Wildnerthe function returns. 515fda1bb4SSascha WildnerIf the request could not be enqueued, generally due 525fda1bb4SSascha Wildnerto invalid arguments, the function returns without having enqueued the 53d5c710e6SSascha Wildnerrequest. 54d5c710e6SSascha Wildner.Pp 55d5c710e6SSascha WildnerIf 56d5c710e6SSascha Wildner.Dv O_APPEND 57d5c710e6SSascha Wildneris set for 58d5c710e6SSascha Wildner.Fa iocb->aio_fildes , 59d5c710e6SSascha Wildner.Fn aio_write 60d5c710e6SSascha Wildneroperations append to the file in the same order as the calls were 615fda1bb4SSascha Wildnermade. 625fda1bb4SSascha WildnerIf 63d5c710e6SSascha Wildner.Dv O_APPEND 64d5c710e6SSascha Wildneris not set for the file descriptor, the write operation will occur at 65d5c710e6SSascha Wildnerthe absolute position from the beginning of the file plus 66d5c710e6SSascha Wildner.Fa iocb->aio_offset . 67d5c710e6SSascha Wildner.Pp 68d5c710e6SSascha WildnerIf 69d5c710e6SSascha Wildner.Dv _POSIX_PRIORITIZED_IO 70d5c710e6SSascha Wildneris defined, and the descriptor supports it, then the enqueued 71d5c710e6SSascha Wildneroperation is submitted at a priority equal to that of the calling 72d5c710e6SSascha Wildnerprocess minus 73d5c710e6SSascha Wildner.Fa iocb->aio_reqprio . 74d5c710e6SSascha Wildner.Pp 75d5c710e6SSascha WildnerThe 76d5c710e6SSascha Wildner.Fa iocb 77d5c710e6SSascha Wildnerpointer may be subsequently used as an argument to 78d5c710e6SSascha Wildner.Fn aio_return 79d5c710e6SSascha Wildnerand 80d5c710e6SSascha Wildner.Fn aio_error 81d5c710e6SSascha Wildnerin order to determine return or error status for the enqueued operation 82d5c710e6SSascha Wildnerwhile it is in progress. 83d5c710e6SSascha Wildner.Pp 84d5c710e6SSascha WildnerIf the request is successfully enqueued, the value of 85d5c710e6SSascha Wildner.Fa iocb->aio_offset 86d5c710e6SSascha Wildnercan be modified during the request as context, so this value must not 87d5c710e6SSascha Wildnerbe referenced after the request is enqueued. 88d5c710e6SSascha Wildner.Sh RESTRICTIONS 89d5c710e6SSascha WildnerThe Asynchronous I/O Control Block structure pointed to by 90d5c710e6SSascha Wildner.Fa iocb 91d5c710e6SSascha Wildnerand the buffer that the 92d5c710e6SSascha Wildner.Fa iocb->aio_buf 93d5c710e6SSascha Wildnermember of that structure references must remain valid until the 945fda1bb4SSascha Wildneroperation has completed. 955fda1bb4SSascha WildnerFor this reason, use of auto (stack) variables 96d5c710e6SSascha Wildnerfor these objects is discouraged. 97d5c710e6SSascha Wildner.Pp 98d5c710e6SSascha WildnerThe asynchronous I/O control buffer 99d5c710e6SSascha Wildner.Fa iocb 100d5c710e6SSascha Wildnershould be zeroed before the 101d5c710e6SSascha Wildner.Fn aio_write 1025fda1bb4SSascha Wildnerfunction. 103d5c710e6SSascha Wildner.Pp 104d5c710e6SSascha WildnerModifications of the Asynchronous I/O Control Block structure or the 105d5c710e6SSascha Wildnerbuffer contents after the request has been enqueued, but before the 106d5c710e6SSascha Wildnerrequest has completed, are not allowed. 107d5c710e6SSascha Wildner.Pp 108d5c710e6SSascha WildnerIf the file offset in 109d5c710e6SSascha Wildner.Fa iocb->aio_offset 110d5c710e6SSascha Wildneris past the offset maximum for 111d5c710e6SSascha Wildner.Fa iocb->aio_fildes , 112d5c710e6SSascha Wildnerno I/O will occur. 113d5c710e6SSascha Wildner.Sh RETURN VALUES 114d5c710e6SSascha Wildner.Rv -std aio_write 115d5c710e6SSascha Wildner.Sh ERRORS 116d5c710e6SSascha WildnerThe 117d5c710e6SSascha Wildner.Fn aio_write 118d5c710e6SSascha Wildnerfunction will fail if: 119d5c710e6SSascha Wildner.Bl -tag -width Er 120d5c710e6SSascha Wildner.It Bq Er EAGAIN 121d5c710e6SSascha WildnerThe request was not queued because of system resource limitations. 122d5c710e6SSascha Wildner.It Bq Er ENOSYS 123d5c710e6SSascha WildnerThe 124d5c710e6SSascha Wildner.Fn aio_write 1255fda1bb4SSascha Wildnerfunction is not supported. 126d5c710e6SSascha Wildner.El 127d5c710e6SSascha Wildner.Pp 128d5c710e6SSascha WildnerThe following conditions may be synchronously detected when the 129d5c710e6SSascha Wildner.Fn aio_write 1305fda1bb4SSascha Wildnerfunction is made, or asynchronously, at any time thereafter. 1315fda1bb4SSascha WildnerIf they are detected at call time, 132d5c710e6SSascha Wildner.Fn aio_write 133d5c710e6SSascha Wildnerreturns -1 and sets 134d5c710e6SSascha Wildner.Va errno 135d5c710e6SSascha Wildnerappropriately; otherwise the 136d5c710e6SSascha Wildner.Fn aio_return 137d5c710e6SSascha Wildnerfunction must be called, and will return -1, and 138d5c710e6SSascha Wildner.Fn aio_error 139d5c710e6SSascha Wildnermust be called to determine the actual value that would have been 140d5c710e6SSascha Wildnerreturned in 141d5c710e6SSascha Wildner.Va errno . 142d5c710e6SSascha Wildner.Bl -tag -width Er 143d5c710e6SSascha Wildner.It Bq Er EBADF 144d5c710e6SSascha Wildner.Fa iocb->aio_fildes 145d5c710e6SSascha Wildneris invalid, or is not opened for writing. 146d5c710e6SSascha Wildner.It Bq Er EINVAL 147d5c710e6SSascha WildnerThe offset 148d5c710e6SSascha Wildner.Fa iocb->aio_offset 149d5c710e6SSascha Wildneris not valid, the priority specified by 150d5c710e6SSascha Wildner.Fa iocb->aio_reqprio 151d5c710e6SSascha Wildneris not a valid priority, or the number of bytes specified by 152d5c710e6SSascha Wildner.Fa iocb->aio_nbytes 153d5c710e6SSascha Wildneris not valid. 154d5c710e6SSascha Wildner.El 155d5c710e6SSascha Wildner.Pp 156d5c710e6SSascha WildnerIf the request is successfully enqueued, but subsequently canceled 157d5c710e6SSascha Wildneror an error occurs, the value returned by the 158d5c710e6SSascha Wildner.Fn aio_return 159d5c710e6SSascha Wildnerfunction is per the 160d5c710e6SSascha Wildner.Xr write 2 161d5c710e6SSascha Wildnercall, and the value returned by the 162d5c710e6SSascha Wildner.Fn aio_error 163d5c710e6SSascha Wildnerfunction is either one of the error returns from the 164d5c710e6SSascha Wildner.Xr write 2 165d5c710e6SSascha Wildnercall, or one of: 166d5c710e6SSascha Wildner.Bl -tag -width Er 167d5c710e6SSascha Wildner.It Bq Er EBADF 168d5c710e6SSascha Wildner.Fa iocb->aio_fildes 169d5c710e6SSascha Wildneris invalid for writing. 170d5c710e6SSascha Wildner.It Bq Er ECANCELED 171d5c710e6SSascha WildnerThe request was explicitly canceled via a call to 172d5c710e6SSascha Wildner.Fn aio_cancel . 173d5c710e6SSascha Wildner.It Bq Er EINVAL 174d5c710e6SSascha WildnerThe offset 175d5c710e6SSascha Wildner.Fa iocb->aio_offset 176d5c710e6SSascha Wildnerwould be invalid. 177d5c710e6SSascha Wildner.El 178d5c710e6SSascha Wildner.Sh STANDARDS 179d5c710e6SSascha Wildner.Fn aio_write 180d5c710e6SSascha Wildneris expected to conform to the 181d5c710e6SSascha Wildner.St -p1003.2 182d5c710e6SSascha Wildnerstandard. 183d5c710e6SSascha Wildner.Sh HISTORY 184d5c710e6SSascha WildnerThe 185d5c710e6SSascha Wildner.Nm 186d5c710e6SSascha Wildnerfunction first appeared in 187d5c710e6SSascha Wildner.Fx 3.0 . 188d5c710e6SSascha Wildner.Sh AUTHORS 189d5c710e6SSascha WildnerThis manual page was written by 190*98b3d9adSFranco Fichtner.An Wes Peters Aq Mt wes@softweyr.com . 191eb0d1630SSascha Wildner.Sh BUGS 192eb0d1630SSascha WildnerAsynchronous I/O operations cannot be canceled in this implementation. 193