vm_ioaccessp 内核服务

用途

对指定的页面范围启动异步页面调进或页面调出。

语法

#include <sys/types.h>
#include <sys/errno.h>
#include <sys/vmuser.h>
int vm_ioaccessp ( 布希德, 普首, npages, 修改者)
Vmid_t 布希德;
vpn_t 普首;
vpn_t npages;
乌英特 修改者;

参数

描述
布希德 标识基本段。
普首 范围内的第一个页码。
npages 普首 值开始,要访问的页面数。 所有页面必须位于同一段中。
修饰符 (modifier) 由用户传递的标志。 下面详细介绍了这些标志。

描述

vm_ioaccessp 内核服务例程使具有线程级策略例程的客户机文件系统能够访问指定的页面。 此调用是严格的咨询,可能在未执行任何操作的情况下返回。 如果您希望实际移动数据,请调用 VM_uiomove 内核服务。 如果要对目标进行预调页,请调用 vm_readp 内核服务。

通过 修改者 参数传递的标志确定 vm_ioaccessp 内核服务所执行的操作的类型。 有关每个标志的用途的详细信息,请参阅下表。

这些旗帜带有某些限制。 不能同时请求 make 和 flush 操作。 此外,如果已声明 VM_IOACCESSP_WAITONLY 标志,那么必须至少指定一种类型的等待操作。 最后,如果声明了 VM_IOACCESSP_WAITONLY 标志,那么无法请求 make 或 flush 操作。

标志

名称 用途
0x0001 VM_IOACCESSP_MAKE 在指定范围内创建处于页面调进状态的新页面。 最多只能组成 1MB 个页面。
0x0002 VM_IOACCESSP_FLUSH 清空指定范围内的页面。
0x0004 VM_IOACCESSP_PGINWAIT 如果指定范围内的页面处于页面调进状态,那么将阻止该页面直至页面调进完成。
0x0008 VM_IOACCESSP_PGOUTWAIT 如果指定范围内的页面处于页面出页状态,那么在页面出页完成之前将阻止。
0x0010 VM_IOACCESSP_WAITONLY 指定的等待完成后返回。 另外,还必须指定 VM_IOACCESSP_PGINWAIT 标志和 VM_IOACCESSP_PGOUTWAIT 标志。

执行环境

仅可从 流程环境 调用 vm_ioaccessp 内核服务。

返回值

描述
重大安全事件数量 指示 I/O 访问操作的完成情况。
EINVAL 指示下列其中一个错误:
  • 普首 = 0 , npages = 0。
  • 普首 < 0.
  • npages < 0.
  • 页时间间隔不在一个段中。
  • 锡德 参数无效。
  • 页面发出大于 1 MB 1 请求。
  • 不是客户机文件系统。
  • 使用了不受支持的标志。
  • 将同时设置 VM_IOACCESSP_MAKEVM_IOACCESSP_FLUSH 标志。
  • 设置了 VM_IOACCESSP_WAITONLY 标志,但未设置 VM_IOACCESSP_PGINWAIT 标志或 VM_IOACCESSP_PGOUTWAIT 标志。
  • VM_IOACCESSP_WAITONLY 标志和 VM_IOACCESSP_MAKE 标志或 VM_IOACCESSP_FLUSH 标志都已设置。