io_getevents -
считывает
асинхронные
события
ввода/вывода
из очереди
выполнения
Standard C library (
libc,
-lc)
#include <linux/aio_abi.h> /* Definition of *io_* types */
#include <sys/syscall.h> /* Definition of SYS_* constants */
#include <unistd.h>
int syscall(SYS_io_getevents, aio_context_t ctx_id,
long min_nr, long nr, struct io_event *events,
struct timespec *timeout);
Note: glibc provides no wrapper for
io_getevents(), necessitating
the use of
syscall(2).
Note: this page describes the raw Linux system call interface. The
wrapper function provided by
libaio uses a different type for the
ctx_id argument. See NOTES.
Системный
вызов
io_getevents()
пытается
считать, по
меньшей
мере, от
min_nr
до
nr
событий из
очереди
выполнения
контекста AIO,
указанном
в
ctx_id.
The
timeout argument specifies the amount of time to wait for events, and
is specified as a relative timeout in a
timespec(3) structure.
Указанное
время
округляется
до
точности
системных
часов и
гарантируется,
что он не
будет
просрочено/сработает
раньше.
Указание в
timeout
значения NULL
приводит к
бесконечной
блокировке
— до
получения
не менее
min_nr
событий.
При
успешном
выполнении
io_getevents()
возвращается
количество
прочитанных
событий.
Оно может
быть 0 или
меньше
min_nr,
если
timeout
просрочен.
Также
может
возвращаться
ненулевое
значение
меньше
min_nr,
если вызов
был
прерван
обработчиком
сигнала.
Значения
при
ошибках
смотрите в
разделе
ЗАМЕЧАНИЯ.
- EFAULT
- Задан
неправильный
указатель
в events или timeout.
- EINTR
- Прерван
обработчиком
сигнала;
смотрите
signal(7).
- EINVAL
- Неверное
значение
ctx_id.
Значение
min_nr или nr
лежит за
пределами
диапазона.
- ENOSYS
- Вызов
io_getevents() не
реализован
для данной
архитектуры.
Асинхронные
системные
вызовы
ввода-вывода
впервые
появились
в Linux 2.5.
Вызов
io_getevents()
есть
только в Linux, и
он не
должен
использоваться
в
переносимых
программах.
You probably want to use the
io_getevents() wrapper function provided by
libaio.
Заметим,
что в
обёрточной
функции
libaio
используется
другой тип (
io_context_t)
аргумента
ctx_id. Также
заметим,
что
libaio не
следует
соглашениям
обычной
библиотеки
C для
возврата
ошибок: при
ошибке она
возвращает
отрицательный
номер
ошибки (из
списка в
разделе
ОШИБКИ).
Если
системный
вызов
вызывается
с помощью
syscall(2), то
возвращаемое
значение
следует
обычным
соглашениям
для
указания
на ошибку:
возвращается
-1 и в
errno
записывается
(положительное)
значение
возникшей
ошибки.
Некорректное
значение
ctx_id
может
привести к
ошибке
сегментирования,
а не
генерации
ошибки
EINVAL.
io_cancel(2),
io_destroy(2),
io_setup(2),
io_submit(2),
timespec(3),
aio(7),
time(7)
Русский
перевод
этой
страницы
руководства
был сделан
Azamat Hackimov <
[email protected]>, Dmitriy S. Seregin
<
[email protected]>, Yuri Kozlov <
[email protected]> и
Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]