man kaio:kaio没有手动输入

时间:2010-04-16 01:39:59

标签: solaris truss

我桁架了一个过程,它们如下所示。我想知道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 个答案:

答案 0 :(得分:3)

an article关于它:

  

顾名思义,kaio所做的是在内核中实现异步I / O,而不是通过用户线程在用户域中实现。 I / O队列在操作系统中创建和管理。事件的基本顺序如下:当应用程序调用aioread(3)或aiowrite(3)时,将输入相应的库例程。输入后,库首先尝试通过kaio处理请求。执行kaio初始化例程,该例程创建“清理”线程,该线程旨在确保在异步I / O过程期间没有已分配但未释放的剩余存储器段。一旦完成,就调用kaio,此时进行测试以确定所请求的I / O是否支持kaio。

     

Kaio实现为可加载的内核模块/ kernel / sys / kaio,并在第一次调用异步I / O时加载。您可以使用modinfo(1M)确定模块是否已加载:

fawlty> modinfo | grep kaio 
105 608c4000   2efd 178   1  kaio (kernel Async I/O) 
fawlty> 

答案 1 :(得分: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 
         */