io_cancel - отменяет
невыполненную
асинхронную
операцию
ввода-вывода
Standard C library (
libc,
-lc)
Alternatively, Asynchronous I/O library (
libaio,
-laio); see
NOTES.
#include <linux/aio_abi.h> /* Definition of needed types */
#include <sys/syscall.h> /* Definition of SYS_* constants */
#include <unistd.h>
int syscall(SYS_io_cancel, aio_context_t ctx_id, struct iocb *iocb,
struct io_event *result);
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_cancel()
пытается
отменить
асинхронную
операцию
ввода-вывода,
ранее
отправленную
системным
вызовом
io_submit(2).
В В
параметре
iocb
указывается
отменяемая
операция, а
в
параметре
ctx_id задаётся
идентификатор
контекста AIO
отправленной
операции.
Если
операция
успешно
отменена,
то событие
будет
скопировано
в память,
куда
указывает
result, без
помещения
в очередь
выполнения.
В случае
успешного
завершения
io_cancel()
возвращает
0. В случае
ошибки
смотрите
ЗАМЕЧАНИЯ.
- EAGAIN
- Указанный
iocb не был
отменен.
- EFAULT
- Одна из
структур
данных
указывает
на
некорректные
данные.
- EINVAL
- Некорректен
контекст AIO,
указанный
ctx_id.
- ENOSYS
- Вызов io_cancel()
не
реализован
для этой
архитектуры.
Асинхронные
системные
вызовы
ввода-вывода
впервые
появились
в Linux 2.5.
Вызов
io_cancel()
есть
только в Linux, и
он не
должен
использоваться
в
переносимых
программах.
You probably want to use the
io_cancel() wrapper function provided by
libaio.
Заметим,
что в
обёрточной
функции
libaio
используется
другой тип (
io_context_t)
аргумента
ctx_id. Также
заметим,
что
libaio не
следует
соглашениям
обычной
библиотеки
C для
возврата
ошибок: при
ошибке она
возвращает
отрицательный
номер
ошибки (из
списка в
разделе
ОШИБКИ).
Если
системный
вызов
вызывается
с помощью
syscall(2), то
возвращаемое
значение
следует
обычным
соглашениям
для
указания
на ошибку:
возвращается
-1 и в
errno
записывается
(положительное)
значение
возникшей
ошибки.
io_destroy(2),
io_getevents(2),
io_setup(2),
io_submit(2),
aio(7)
Русский
перевод
этой
страницы
руководства
был сделан
Azamat Hackimov <
[email protected]>, Dmitriy S. Seregin
<
[email protected]>, Yuri Kozlov <
[email protected]> и
Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]