NAME
lio_listio
—
list directed I/O (REALTIME)
LIBRARY
library “librt”
SYNOPSIS
#include
<aio.h>
int
lio_listio
(int mode,
struct aiocb * const list[], int
nent, struct sigevent *sig);
DESCRIPTION
Thelio_listio
()
function initiates a list of I/O requests with a single function call. The
list argument is an array of pointers to
aiocb structures describing each operation to perform,
with nent elements. NULL
elements are ignored.
The aio_lio_opcode field of each aiocb specifies the operation to be performed. The following operations are supported:
LIO_READ
- Read data as if by a call to aio_read(3).
LIO_NOP
- No operation.
LIO_WRITE
- Write data as if by a call to aio_write(3).
If the mode argument is
LIO_WAIT
,
lio_listio
()
does not return until all the requested operations have been completed. If
mode is LIO_NOWAIT
, the
requests are processed asynchronously, and the signal specified by
sig is sent when all operations have completed. If
sig is NULL
, the calling
process is not notified of I/O completion.
The order in which the requests are carried out is not specified, and there is no guarantee that they will be executed sequentially.
RETURN VALUES
If mode is LIO_WAIT
,
the lio_listio
() function returns 0 if the
operations completed successfully, otherwise -1.
If mode is
LIO_NOWAIT
, the lio_listio
()
function returns 0 if the operations are successfully queued, otherwise
-1.
ERRORS
The lio_listio
() function will fail
if:
- [
EAGAIN
] - There are not enough resources to enqueue the requests; or the request
would cause the system-wide limit
AIO_MAX
to be exceeded. - [
EINTR
] - A signal interrupted the system call before it could be completed.
- [
EINVAL
] - The mode argument is neither
LIO_WAIT
norLIO_NOWAIT
, or nent is greater thanAIO_LISTIO_MAX
. - [
EIO
] - One or more requests failed.
In addition, the lio_listio
() function may
fail for any of the reasons listed for
aio_read(3) and
aio_write(3).
If lio_listio
() succeeds, or fails with an
error code of EAGAIN
, EINTR
,
or EIO
, some of the requests may have been
initiated. The caller should check the error status of each
aiocb structure individually by calling
aio_error(3).
SEE ALSO
STANDARDS
The lio_listio
() function is expected to
conform to IEEE Std 1003.1-2001
(“POSIX.1”).