vm_mvc 内核服务

用途

读取或写入部分文件页。

语法

#include <sys/types.h>
#include <sys/errno.h>
#include <sys/vmuser.h>
int vm_mvc ( 锡德, 中普诺, in_pgoffs, In_count, 中命令, in_xmemdp, 国际)
Vmid_t 锡德;
vpn_t 中普诺;
国际 in_pgoffs;
国际 In_count;
国际 中命令;
struct xmem * in_xmemdp;
无效 * 国际;

参数

描述
锡德 主内存对象, m1。
中普诺 m1 pno 对象。 如果它是读操作,那么此参数将引用源。 如果不是,它指的是一个目标。
in_pgoffs pno 对象中的字节偏移量。
In_count 内存中要为零或复制的字节数。
中命令 这是函数调用的原因。 可能的值可以是 "零" , "零" (保护) , "读" 或 "写"。
in_xmemdp 第二个内存对象 m2的 xmem 描述符。
国际 xmem 对象中的字节偏移量。

描述

vm_mvc 内核服务旨在供对部分文件页执行读或写操作的客户机文件系统使用,其中文件由 m1 对象表示,而读或写缓冲区由 m2 对象表示。 这类情况发生在 EOF 处理,碎片,压缩以及其他情况中。

给定两个内存对象 ( m1 和 m2) , vm_mvc 内核服务允许您执行下列其中一项操作:
  • m1 对象 (VM_MVC_ZERO) 上的输出字节数为零。
  • 置零并保护 m1 对象 (VM_MVC_PROTZERO)。
  • 将字节从 m1 对象复制到 m2 对象 (VM_MVC_READ)。
  • 将字节从 m2 对象复制到 m1 对象 (VM_MVC_WRITE)。

第一个内存对象 m1由一个 锡德 参数和一个 普诺 参数来表示。 第二个内存对象 m2由 xmem 描述符和用于偏移量的指针来表示。 第二个内存对象是用户或内核缓冲区。

注: 必须锁定第二个内存对象。

标志

中命令 用途
VM_MVC_ZERO m1 对象上的字节数为零。
VM_MVC_READ 将 m1 对象中的字节复制到 m2 对象。
VM_MVC_WRITE 将 m2 对象中的字节复制到 m1 对象。
vm_mvc_protzero 消零并保护 m1 对象。

执行环境

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

返回值

描述
重大安全事件数量 指示 I/O 访问操作已成功完成。
ENOENT 指示未将 (sid , pno) 集映射到实际的帧。
EINVAL 指示下列其中一个错误:
  • m1 对象跨越页面边界。
  • 中命令 参数中不包含有效命令。