vm_mvc Kernel-Service

Zweck

Liest oder schreibt Teilseiten von Dateien.

Syntax

#include <sys/types.h>
#include <sys/errno.h>
#include <sys/vmuser.h>
int vm_mvc ( in_sid, in_pno, in_pgoffs, in_Anzahl, Befehl in_cmd, in_xmemdp, in_ptr)
vmid_t in_sid;
Vpn_T in_pno;
Int in_pgoffs;
Int in_Anzahl;
Int Befehl in_cmd;
struct xmem * in_xmemdp;
Leer * in_ptr;

Parameter

Element Beschreibung
in_sid Das primäre Speicherobjekt m1.
in_pno Das PNO-Objekt m1 . Wenn es sich um eine Leseoperation handelt, verweist dieser Parameter auf die Quelle. Ist dies nicht der Fall, bezieht sie sich auf ein Ziel.
in_pgoffs Die relative Byteadresse im PNO-Objekt.
in_Anzahl Die Anzahl der Byte bis null oder bis zum Kopieren im Speicher.
Befehl in_cmd Der Grund für den Funktionsaufruf Mögliche Werte sind Null, Null (Schutz), Lesen oder Schreiben.
in_xmemdp Der xmem-Deskriptor für das zweite Speicherobjekt, m2.
in_ptr Die relative Byteadresse im xmem-Objekt

Beschreibung

Der vm_mvc -Kernel-Service soll von Clientdateisystemen verwendet werden, die Lese-oder Schreiboperationen für Teilseiten von Dateien ausführen, wobei die Datei durch das Objekt m1 und der Lese-oder Schreibpuffer durch das Objekt m2 angegeben wird. Solche Fälle entstehen unter anderem bei EOF-Handhabung, Fragmenten, Kompression und Löchern.

Bei den beiden Speicherobjekten m1 und m2ermöglicht der vm_mvc -Kernel-Service die Ausführung einer der folgenden Operationen:
  • Null-Byte im m1 -Objekt (VM_MVC_ZERO).
  • Mit Nullen überschreiben und das m1 -Objekt schützen (VM_MVC_PROTZERO).
  • Kopieren Sie Byte aus dem Objekt m1 in das Objekt m2 (VM_MVC_LESEN).
  • Kopieren Sie Byte aus dem Objekt m2 in das Objekt m1 (VM_MVC_WRITE-Wert).

Das erste Speicherobjekt, m1, wird durch einen Parameter Sid und einen Parameter PNO gekennzeichnet. Das zweite Speicherobjekt m2ist durch einen xmem-Deskriptor und einen Zeiger für einen Offset gekennzeichnet. Das zweite Speicherobjekt ist ein Benutzer-oder Kernelpuffer.

Anmerkung: Das zweite Speicherobjekt muss fixiert werden.

Flags

Befehl in_cmd Zweck
VM_MVC_ZERO Die Bytes im Objekt m1 werden mit Nullen überschrieben.
VM_MVC_LESEN Kopiert Bytes aus dem Objekt m1 in das Objekt m2
VM_MVC_WRITE-Wert Kopiert Bytes aus dem Objekt m2 in das Objekt m1
VM_MVC_PROTZERO Nullen werden ausgegeben und das m1 -Objekt wird geschützt.

Ausführungsumgebung

Der Kernel-Service vm_mvc kann nur über Prozessumgebung aufgerufen werden.

Rückgabewerte

Element Beschreibung
0 Gibt an, dass die E/A-Zugriffsoperationen erfolgreich ausgeführt wurden.
ENOENT Gibt an, dass die Gruppe (sid, pno) keinem realen Rahmen zugeordnet wurde.
EINVAL Gibt einen der folgenden Fehler an:
  • Das Objekt m1 überschreitet die Seitenbegrenzung.
  • Der Parameter Befehl in_cmd enthält keinen gültigen Befehl.