io_getevents
Section: Linux AIO (3)
Updated: 201-0-23
Index
Return to Main Contents
NAME
io_getevents, aio_pgetevents - Read resulting events from io requests
SYNOPSIS
#include <errno.h>
#include <libaio.h>
struct iocb {
void *data;
unsigned key;
short aio_lio_opcode;
short aio_reqprio;
int aio_fildes;
};
struct io_event {
unsigned PADDED(data, __pad1);
unsigned PADDED(obj, __pad2);
unsigned PADDED(res, __pad3);
unsigned PADDED(res2, __pad4);
};
int io_getevents(io_context_t ctx, long nr, struct io_event *events[], struct timespec *timeout);
int io_pgetevents(io_context_t ctx, long nr, struct io_event *events[], struct timespec *timeout, sigset_t *sigmask);
DESCRIPTION
Attempts to read up to
nr
events from the completion queue for the aio_context specified by
ctx.
RETURN VALUES
May return
0
if no events are available and the timeout specified
by when has elapsed, where
when
== NULL specifies an infinite
timeout. Note that the timeout pointed to by when is relative and
will be updated if not NULL and the operation blocks. Will fail with
ENOSYS
if not implemented.
io_pgetevents()
The relationship between
io_getevents()
and
io_pgetevents()
is analogous to the relationship between
select(2)
and
pselect(2):
similar to
pselect(2),
pgetevents()
allows an application to safely wait until either an aio completion
event happens or until a signal is caught.
The following
io_pgetevents()
call:
ret = io_pgetevents(ctx, min_nr, nr, events, timeout, sigmask);
is equivalent to
atomically
executing the following calls:
sigset_t origmask;
pthread_sigmask(SIG_SETMASK, &sigmask, &origmask);
ret = io_getevents(ctx, min_nr, nr, events, timeout);
pthread_sigmask(SIG_SETMASK, &origmask, NULL);
See the description of
pselect(2)
for an explanation of why
io_pgetevents()
is necessary.
If the
sigmask
argument is specified as NULL, then no signal mask manipulation is
performed (and thus
io_pgetevents()
behaves the same as
io_getevents()).
ERRORS
- EINVAL
-
If
ctx
is invalid, if
min_nr
is out of range, if
nr
is out of range, if
when
is out of range.
- EFAULT
-
If any of the memory specified to is invalid.
SEE ALSO
io(3),
io_cancel(3),
io_fsync(3),
io_prep_fsync(3),
io_prep_pread(3),
io_prep_pwrite(3),
io_queue_init(3),
io_queue_release(3),
io_queue_run(3),
io_queue_wait(3),
io_set_callback(3),
io_submit(3),
errno(3),
pselect(2).
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- RETURN VALUES
-
- io_pgetevents()
-
- ERRORS
-
- SEE ALSO
-