vm_write 内核服务

用途

对地址空间中的页面范围启动页面出页。

语法

#include <sys/types.h>
#include <sys/errno.h>
#include  <sys/vmuser.h>
int vm_write (vaddr, nbytes, force)
int  vaddr;
int  nbytes;
int  force;

描述

对于与地址范围 (Vaddr)vaddr + nbytes相交的页面, vm_write 内核服务会启动页面调出。

如果 参数为非零值,那么修改后的页将写入磁盘,而不考虑最近写入的时间。

针对每个已修改的页面启动页面输出。 未更改的页保留在内存中,其引用位设置为 0。 这使未更改的页面成为页面替换算法的候选项。

调用者必须具有对指定页面的写访问权。

启动的 I/O 是异步的。 可以调用 vms_iowait 内核服务,以等待 I/O 完成。

注: 不支持在大页上使用 vm_write 子例程。

参数

描述
沃德尔 指定页面范围的第一个字节的地址,需要该字节的页面出页。
nbytes 指定从由 沃德尔 参数指定的字节开始的字节数。 此参数必须为非负。 所有字节都必须在同一个虚拟内存对象中。
force 指定一个标志,该标志指示将写入修改后的页面,而不考虑上次写入该页面的时间。

执行环境

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

返回值

描述
重大安全事件数量 指示成功完成。
EINVAL 指示以下四个错误之一:
  • 未定义某个区域。
  • 区域是一个 I/O 区域。
  • nbytes 参数指定的长度为负数。
  • 地址范围超出了虚拟内存对象边界。
  • 一个或多个大页面位于目标页面范围内。
EACCES 指示访问权不允许写入。
EIO 指示永久性 I/O 错误。