NAME
lio_listio —
list directed I/O
(REALTIME)
LIBRARY
POSIX Real-time Library (librt, -lrt)
SYNOPSIS
#include <aio.h>
int
lio_listio(
int mode,
struct aiocb * const list[],
int
nent,
struct sigevent *sig);
DESCRIPTION
The
lio_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 nor LIO_NOWAIT,
or nent is greater than
AIO_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
read(2),
siginfo(2),
write(2),
aio(3),
sigevent(3)
STANDARDS
The
lio_listio() function is expected to conform to
IEEE Std 1003.1-2001 (“POSIX.1”).