vm_write-Kernel-Service

Zweck

Leitet die Auslagerungsoperation für einen Seitenbereich im Adressraum ein.

Syntax

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

Beschreibung

Der VM-Schreibvorgang -Kernel-Service leitet die Auslagerungsoperation für Seiten ein, die den Adressbereich überschneiden (vaddr), vaddr + nbyte).

Wenn der Parameter Erzwingen ungleich null ist, werden geänderte Seiten auf Platte geschrieben, unabhängig davon, wie kürzlich sie geschrieben wurden.

Auslagerungsvorgang wird für jede geänderte Seite eingeleitet. Eine unveränderte Seite verbleibt im Speicher, deren Referenzbit auf 0 gesetzt ist. Dadurch wird die unveränderte Seite zu einem Kandidaten für den Seitenersetzungsalgorithmus.

Der Aufrufende muss Schreibzugriff auf die angegebenen Seiten haben.

Die eingeleitete Ein-/Ausgabe ist asynchron. Der Kernel-Service vms_iowait kann aufgerufen werden, um auf den Abschluss der Ein-/Ausgabe zu warten.

Anmerkung: Die Subroutine VM-Schreibvorgang wird nicht für die Verwendung auf großen Seiten unterstützt.

Parameter

Element Beschreibung
Vaddr Gibt die Adresse des ersten Byte des Seitenbereichs an, für den eine Einlagerung gewünscht wird.
NByte Gibt die Anzahl der Byte ab dem Byte an, das durch den Parameter Vaddr angegeben wird. Dieser Parameter darf nicht negativ sein. Alle Bytes müssen sich in demselben virtuellen Speicherobjekt befinden.
force Gibt ein Flag an, das angibt, dass eine geänderte Seite geschrieben werden soll, unabhängig davon, wann sie zuletzt geschrieben wurde.

Ausführungsumgebung

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

Rückgabewerte

Element Beschreibung
0 Erfolgreiche Ausführung.
EINVAL Gibt einen der folgenden vier Fehler an:
  • Eine Region ist nicht definiert.
  • Eine Region ist eine E/A-Region.
  • Die mit dem Parameter NByte angegebene Länge ist negativ.
  • Der Adressbereich überschreitet die Grenze eines virtuellen Speicherobjekts.
  • Mindestens eine große Seite liegt im Zielseitenbereich.
EACCES Gibt an, dass der Zugriff das Schreiben nicht zulässt.
EIO Zeigt einen permanenten E/A-Fehler an.