man kaio: нет ручного ввода для kaio - PullRequest
0 голосов
/ 16 апреля 2010

Я запустил процесс, и это строки, как показано ниже. И я хочу знать определение 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:             timeout: 600.000000 sec
/1:     kaio(AIOWAIT, 0xFFFFFFFF7FFFD620)               = 4418033080
/1:             timeout: 600.000000 sec
/1:     kaio(AIOWAIT, 0xFFFFFFFF7FFFD620)               = 4418033584
/1:             timeout: 600.000000 sec

Ответы [ 2 ]

3 голосов
/ 16 апреля 2010

От Статья Об этом:

Что делает 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> 
0 голосов
/ 16 апреля 2010

я получаю ответ:

это определено в файле /usr/include/sys/syscall.h

#define SYS_kaio                178
        /*
         * subcodes:
         *      aioread(...)    :: kaio(AIOREAD, ...)
         *      aiowrite(...)   :: kaio(AIOWRITE, ...)
         *      aiowait(...)    :: kaio(AIOWAIT, ...)
         *      aiocancel(...)  :: kaio(AIOCANCEL, ...)
         *      aionotify()     :: kaio(AIONOTIFY)
         *      aioinit()       :: kaio(AIOINIT)
         *      aiostart()      :: kaio(AIOSTART)
         *      see 
         */
...