p If .Dv O_APPEND is set for .Fa aiocbp->aio_fildes , .Fn aio_write operations append to the file in the same order as the calls were made. If .Dv O_APPEND is not set for the file descriptor, the write operation will occur at the absolute position from the beginning of the file plus .Fa aiocbp->aio_offset .
p If .Dv _POSIX_PRIORITIZED_IO is defined, and the descriptor supports it, then the enqueued operation is submitted at a priority equal to that of the calling process minus .Fa aiocbp->aio_reqprio .
p The .Fa aiocbp pointer may be subsequently used as an argument to .Fn aio_return and .Fn aio_error in order to determine return or error status for the enqueued operation while it is in progress.
p If the request is successfully enqueued, the value of .Fa aiocbp->aio_offset can be modified during the request as context, so this value must not be referenced after the request is enqueued. .Sh RESTRICTIONS The Asynchronous I/O Control Block structure pointed to by .Fa aiocbp and the buffer that the .Fa aiocbp->aio_buf member of that structure references must remain valid until the operation has completed. For this reason, use of auto (stack) variables for these objects is discouraged.
p The asynchronous I/O control buffer .Fa aiocbp should be zeroed before the .Fn aio_write system call to avoid passing bogus context information to the kernel.
p Modifications of the Asynchronous I/O Control Block structure or the buffer contents after the request has been enqueued, but before the request has completed, are not allowed.
p If the file offset in .Fa aiocbp->aio_offset is past the offset maximum for .Fa aiocbp->aio_fildes , no I/O will occur. .Sh RETURN VALUES .Rv -std aio_write .Sh ERRORS The .Fn aio_write system call will fail if: l -tag -width Er t Bq Er EAGAIN The request was not queued because of system resource limitations. .El
p The following conditions may be synchronously detected when the .Fn aio_write system call is made, or asynchronously, at any time thereafter. If they are detected at call time, .Fn aio_write returns -1 and sets .Va errno appropriately; otherwise the .Fn aio_return system call must be called, and will return -1, and .Fn aio_error must be called to determine the actual value that would have been returned in .Va errno .
p l -tag -width Er t Bq Er EBADF The .Fa aiocbp->aio_fildes argument is invalid, or is not opened for writing. t Bq Er EINVAL The offset .Fa aiocbp->aio_offset is not valid, the priority specified by .Fa aiocbp->aio_reqprio is not a valid priority, or the number of bytes specified by .Fa aiocbp->aio_nbytes is not valid. .El
p If the request is successfully enqueued, but subsequently canceled or an error occurs, the value returned by the .Fn aio_return system call is per the .Xr write 2 system call, and the value returned by the .Fn aio_error system call is either one of the error returns from the .Xr write 2 system call, or one of: l -tag -width Er t Bq Er EBADF The .Fa aiocbp->aio_fildes argument is invalid for writing. t Bq Er ECANCELED The request was explicitly canceled via a call to .Fn aio_cancel . t Bq Er EINVAL The offset .Fa aiocbp->aio_offset would be invalid. .El .Sh SEE ALSO .Xr siginfo 2 , .Xr aio 3 .Sh STANDARDS The .Fn aio_write system call is expected to conform to the .St -p1003.1-2001 standard. .Sh HISTORY The .Fn aio_write system call first appeared in .Nx 5.0 .