2010-04-16 4 views
0

Я связал процесс, и это линии, как показано ниже. И я хочу знать определение kaio, но ручного ввода для kaio нет, поэтому могу ли я получить определение?man 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

С an article об этом:

Что 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

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

это определено в файле /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 
     */