2010-04-16 46 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呢,顧名思義,就是通過用戶線程執行內核中,而不是在用戶空間的異步I/O。 I/O隊列在操作系統中創建和管理。事件的基本順序如下:當應用程序調用aioread(3)或aiowrite(3)時,會輸入相應的庫例程。一旦進入,圖書館首先嚐試通過kaio處理請求。執行一個kaio初始化例程,該例程創建一個「清理」線程,該線程旨在確保在異步I/O進程期間沒有剩餘的已分配但未釋放的內存段。完成後,將調用kaio,此時將進行測試以確定kaio是否支持所請求的I/O。

Kaio實現爲可加載內核模塊/ kernel/sys/kaio,並在第一次調用異步I/O時加載。你可以決定是否模塊被加載或不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 
     */