swapctl(2) swapctl(2)
NAME
swapctl - Swap-Bereich verwalten
SYNTAX
#include <sys/stat.h>
#include <sys/swap.h>
int swapctl(int cmd, void *arg);
BESCHREIBUNG
swapctl() addiert, löscht oder liefert Informationen über Swap-
Ressourcen. cmd gibt dabei eine der folgenden Optionen an, die in der
Datei sys/swap.h definiert werden:
SCADD /* Ressource als Swap-Bereich einrichten */
SCLIST /* Die Swap-Ressourcen auflisten */
SCREMOVE /* Eine Swap-Ressource entfernen */
SCGETNSWP /* Die Anzahl der Swap-Ressourcen
zurückgeben */
Wenn SCADD oder SCREMOVE angegeben wird, ist arg ein Zeiger auf eine
swapres-Struktur, welche die folgenden Komponenten enthält:
char *srname; /* Pfadname der Ressourcen */
offt srstart; /* Offset, bei dem der Swap-Bereich
beginnt */
offt srlength; /* Länge des Swap-Bereiches */
srstart und srlength werden in 512-Byte Blöcken angegeben.
Wenn SCLIST angegeben wird, ist arg ein Zeiger auf eine swaptable-
Struktur, welche die folgenden Komponenten enthält:
int swtn; /* Anzahl der Swap-Ressourcen */
struct swapent swtent[]; /* Feld der swtn Swap-Ressourcen */
Eine swapent-Struktur enthält die folgenden Komponenten:
char *stepath; /* Name der Swap-Datei */
offt stestart; /* Anfangsblock zum Swappen */
offt stelength; /* Länge des Swap-Bereichs */
long stepages; /* Anzahl der Seiten zum Swappen */
long stefree; /* Anzahl von stepages frei */
long steflags; /* STINDEL Bit gesetzt, wenn Swap-Datei
nun gelöscht wird */
SCLIST veranlaßt swapctl() dazu, swtn Einträge zurückzugeben. Der
Rückgabewert von swapctl() ist die Anzahl der wirklich zurückgeliefer-
ten Einträge. Das STINDEL-Bit wird in steflags angeschaltet, wenn
die Swap-Datei gerade gelöscht wird.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
swapctl(2) swapctl(2)
Wenn SCGETNSWP angegeben wird, liefert swapctl() als Wert die Anzahl
der Swap-Ressourcen zurück, die momentan verwendet werden. arg wird
für diese Operation ignoriert.
Die SCADD- und SCREMOVE-Funktionen schlagen fehl, wenn der aufru-
fende Prozeß nicht die entsprechenden Privilegien besitzt.
Unter den folgenden Bedingungen schlägt die Funktion swapctl() fehl
und setzt errno auf die folgenden Werte:
EEXIST Ein Teil des durch srstart und srlength angegebenen
Bereichs auf der angegebenen Ressource wird bereits als
Swap-Bereich verwendet (SCADD).
EFAULT arg, srname, oder stepath weist über den zugewiesenen
Adreßraum des Prozesses hinaus.
EINVAL Der angegebene Funktionswert ist nicht gültig, der ange-
gebene Pfad ist keine Swap-Ressource (SCREMOVE), Teile
des Bereichs, der durch srstart und srlength angegeben
wird, liegen außerhalb der angegebenen Ressource
(SCADD), oder der angegebene Swap-Bereich ist kleiner
als eine Seite (SCADD).
EISDIR Der für SCADD angegebene Pfad ist ein Verzeichnis.
ELOOP Zu viele symbolische Verweise traten bei der Übersetzung
des Pfadnamens für SCADD oder SCREMOVE auf.
ENAMETOOLONG Die Länge einer Komponenten im Pfad für SCADD oder
SCREMOVE überschreitet NAMEMAX Zeichen, oder die Länge
des Pfads überschreitet PATHMAX Zeichen.
ENOENT Der Pfadname für SCADD oder SCREMOVE existiert nicht.
ENOMEM Eine unzureichende Anzahl von struct-swapent-Strukturen
wurde für SCLIST bereitgestellt, oder es stehen unzu-
reichende Systemspeicherressourcen während einer SCADD-
oder SCREMOVE-Operation zur Verfügung, oder das System
hätte nach einer SCREMOVE-Operation einen zu kleinen
Swap-Bereich.
ENOSYS Der Pfadname für SCADD oder SCREMOVE ist keine Datei
oder keine blockorientierte Gerätedatei.
ENOTDIR Der Pfadname für SCADD oder SCREMOVE enthält eine Kom-
ponente, bei der es sich nicht um ein Verzeichnis han-
delt.
EPERM Der Prozeß hat keine entsprechenden Privilegien.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
swapctl(2) swapctl(2)
EROFS Der Pfadname für SCADD gibt ein Dateisystem an, das nur
lesbar ist.
ERGEBNIS
Nach erfolgreicher Durchführung liefert die Funktion swapctl() den
Wert 0 für SCADD oder SCREMOVE, die Anzahl der struct swapent-Ein-
träge für SCLIST, oder die Anzahl der Swap-Ressourcen für SCGETNSWP
zurück. Bei Fehlern wird -1 zurückgegeben und die Fehlernummer in
errno abgelegt.
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98