vms_iowait , vms_iowaitf 内核服务

用途

等待虚拟内存对象中的页面的所有页面调出操作完成。

语法

#include <sys/types.h>
#include <sys/errno.h>
#include <sys/vmuser.h>

int vms_iowait ( vmid)
vmid_t vmid;

int vms_iowaitf ( vmid, flags)
vmid_t vmid;
int flags; 

参数

表 1. 参数
描述
弗米德 标识要为其等待的虚拟内存对象。
标志 由用户传递的可选标志。

描述

vms_iowait 内核服务执行两项任务。 首先,它会确定 vmid 参数指定的虚拟内存对象当前计划的所有分页完成时的 I/O 级别。 然后,vms_iowait 服务会将当前进程置于等待状态,直到达到该 I/O 级别。

I/O 级别值是对每个虚拟内存对象保留的页面输出操作计数。

在所有先前请求完成之前, I/O 级别不会增加新页面输出请求的 I/O 级别,从而使 I/O 级别进行无序处理。 因此,在单个页面输出操作完成后,可以唤醒正在不同 I/O 级别上等待的进程。

如果调用者持有内核锁,vms_iowait 服务会在等待前释放内核锁,然后重新获取内核锁。

vms_iowait 函数是设置了 V_WAITERR 标记的 vms_iowaitf 函数的特例。

标志

表 2. 标志
姓名 用途
V_WAITERR 除非发生错误,否则等待直至所有 I/O 完成。
V_WAITALL 等待所有 I/O 完成,而不考虑发生的任何 I/O 错误。

执行环境

vms_iowaitvms_iowaitf 内核服务只能从 进程环境中调用。

只有文件段才能使用这些文件段。

返回值

表 3. 返回值
描述
0 指示已完成页面出入操作。
EIO 指示执行 I/O 时发生了错误。