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->aio_lio_opcode argument is ignored by the .Fn aio_read system call.
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 could not be enqueued (generally due to invalid arguments), then the call returns without having enqueued the request.
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_read 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_read .Sh ERRORS The .Fn aio_read 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_read system call is made, or asynchronously, at any time thereafter. If they are detected at call time, .Fn aio_read 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. 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. t Bq Er EOVERFLOW The file is a regular file, .Fa aiocbp->aio_nbytes is greater than zero, the starting offset in .Fa aiocbp->aio_offset is before the end of the file, but is at or beyond the .Fa aiocbp->aio_fildes offset maximum. .El
p If the request is successfully enqueued, but subsequently cancelled or an error occurs, the value returned by the .Fn aio_return system call is per the .Xr read 2 system call, and the value returned by the .Fn aio_error system call is either one of the error returns from the .Xr read 2 system call, or one of: l -tag -width Er t Bq Er EBADF The .Fa aiocbp->aio_fildes argument is invalid for reading. t Bq Er ECANCELED The request was explicitly cancelled 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_read system call is expected to conform to the .St -p1003.1-2001 standard. .Sh HISTORY The .Fn aio_read system call first appeared in .Nx 5.0 .