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”).