man kaio: нет ручного ввода для kaio
Я связал процесс, и они являются линиями, как показано ниже. И я хочу знать определение kaio, но для kaio нет ручного ввода, так могу ли я получить определение?
/ 1: kaio (AIOWRITE, 259, 0x3805B2A00, 8704, 0x099C9E000755D3C0) = 0 / 1: kaio (AIOWRITE, 259, 0x380CF9200, 14336, 0x099CC0000755D5B8) = 0 / 1: kaio (AIOWRITE, 259, 0x381573600, 8704, 0x099CF8000755D7B0) = 0 / 1: kaio (AIOWRITE, 259, 0x381ACA600, 8192, 0x099D1A000755D9A8) = 0 / 1: kaio (AIOWAIT, 0xFFFFFFFF7FFFD620) = 4418032576 / 1: тайм-аут: 600,000000 с / 1: kaio (AIOWAIT, 0xFFFFFFFF7FFFD620) = 4418033080 / 1: тайм-аут: 600,000000 с / 1: kaio (AIOWAIT, 0xFFFFFFFF7FFFD620) = 4418033584 / 1: тайм-аут: 600,000000 с
2 ответа
Из статьи об этом:
Как следует из названия, kaio выполняет асинхронный ввод-вывод внутри ядра, а не в пользовательской среде через пользовательские потоки. Очередь ввода / вывода создается и управляется в операционной системе. Основная последовательность событий следующая: когда приложение вызывает aioread(3) или aiowrite(3), вводится соответствующая библиотечная процедура. После ввода библиотека сначала пытается обработать запрос через kaio. Выполняется процедура инициализации kaio, которая создает поток "очистки", который предназначен для того, чтобы гарантировать отсутствие оставшихся сегментов памяти, которые были выделены, но не освобождены во время процесса асинхронного ввода-вывода. После этого вызывается kaio, после чего делается тест, чтобы определить, поддерживается ли kaio для запрошенного ввода-вывода.
Kaio реализован в виде загружаемого модуля ядра /kernel/sys/kaio и загружается при первом вызове асинхронного ввода-вывода. Вы можете определить, загружен модуль или нет с помощью modinfo(1M):
fawlty> modinfo | grep kaio
105 608c4000 2efd 178 1 kaio (kernel Async I/O)
fawlty>
Я получаю ответ:
это определено в файле /usr/include/sys/syscall.h
#define SYS_kaio 178 / * * подкоды: * aioread(...):: kaio(AIOREAD, ...) * aiowrite(...):: kaio(AIOWRITE, ...) * aiowait(...):: kaio(AIOWAIT, ...) * aiocancel(...):: kaio(AIOCANCEL, ...) * aionotify():: kaio(AIONOTIFY) * aioinit():: kaio(AIOINIT) * aiostart():: kaio(AIOSTART) * увидеть * /