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