vm_release 内核服务

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

用途

释放指定地址范围的虚拟内存资源。

语法

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

描述

vm_release 内核服务会释放与指定地址范围 (从 沃德尔 参数到 沃德尔 参数) 相交的页面,加上 nbytes 参数指定的字节数。 nbytes 参数中的值必须是非负值,并且调用者必须对地址范围指定的页面具有写访问权。

与字节范围相交的每个页在逻辑上重置为 0 ,并且任何页帧都将被废弃。 处于 I/O 状态的页帧在 I/O 完成时标记为废弃。 即,当 I/O 操作完成时,页帧被放置在空闲列表上。

注: 要释放的所有页面都必须位于同一个虚拟内存对象中。

参数

描述
沃德尔 指定要释放的地址范围中的第一个字节的地址。
nbytes 指定要释放的字节的数目。

执行环境

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

返回值

描述
重大安全事件数量 指示成功完成。
EACCES 指示调用者对指定的页面不具有写访问权。
EINVAL 指示下列其中一个错误:
  • 未映射指定的区域。
  • 指定的区域是 I/O 区域。
  • nbytes 参数中指定的长度为负数。
  • 指定的地址范围跨越虚拟内存对象边界。
  • 一个或多个大页面位于目标页面范围内。