mprotect(2) mprotect(2)
NAME
mprotect - Zugriffsschutz für Speicherabbildung ändern
SYNTAX
#include <sys/mman.h>
int mprotect(void *addr, sizet len, int prot);
BESCHREIBUNG
Die Funktion mprotect() ändert den Zugriffsschutz für die Abbildungen
im Bereich [addr, addr + len) auf prot. Die gültigen Werte für prot
sind dieselben wie für mmap() und werden in der Datei sys/mman.h wie
folgt definiert:
PROTREAD /* Seite kann gelesen werden */
PROTWRITE /* Seite kann geschrieben werden */
PROTEXEC /* Seite kann ausgeführt werden */
PROTNONE /* Seite kann nicht referiert werden */
FEHLER
Die folgenden Beschreibungen der Fehlercodes sind funktionsspezifisch.
Eine allgemeingültige Beschreibung finden Sie in introprm2(2) bzw. in
errno(5).
Unter den folgenden Bedingungen schlägt die Funktion mprotect() fehl
und setzt errno auf die folgenden Werte:
EACCES Wenn prot einen Schutz angibt, der die Zugriffsrechte des
Prozesses auf das zugrundeliegende Speicherobjekt verletzt.
EAGAIN Wenn prot PROTWRITE für eine Abbildung vom Typ MAPPRIVATE
angibt und unzureichende Speicherressourcen zum Sperren der
privaten Seite reservierbar sind.
EINVAL Wenn addr kein Vielfaches der Seitenlänge ist, welche von
sysconf() zurückgegeben wird.
EINVAL Wenn das Argument len einen Wert kleiner oder gleich 0 ent-
hält.
ENOMEM Wenn Adressen im Bereich [addr, addr + len) für den Adreßbe-
reich eines Prozesses ungültig sind, oder eine oder mehrere
Seiten angegeben werden, welche nicht abgebildet werden.
Wenn mprotect() aus anderen Gründen als EINVAL fehlschlägt, können die
Schutzmechanismen für einige Seiten im Bereich [addr, addr + len)
bereits geändert worden sein. Wenn der Fehler bei einigen Seiten an
der Adresse addr2 auftritt, dann werden die Schutzmechanismen aller
ganzen Seiten im Bereich [addr, addr2] verändert.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
mprotect(2) mprotect(2)
ERGEBNIS
Nach erfolgreicher Ausführung liefert die Funktion mprotect() den Wert
0; ansonsten wird der Wert -1 zurückgegeben und errno gesetzt.
SIEHE AUCH
memcntl(2), mmap(2), plock(2), mlock(3C), mlockall(3C), sysconf(3C),
mman(5).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98