Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

mprotect - Zugriffsschutz für Speicherabbildung ändern

&pagelevel(4)&pagelevel

Definition

#include <sys/mman.h>

int mprotect(void *addr, size_t len, int prot);

Beschreibung

Die Funktion mprotect() ändert die Zugriffsrechte für die Abbildungen im Bereich [addr, addr + len) auf das in prot angegebene Zugriffsrecht. Der in len angegebene Wert wird dabei auf ein Vielfaches der durch sysconf() vorgegebenen Seitengröße gerundet. Für prot sind alle Werte zulässig, die auch in mmap() angegeben werden können:

Die Werte für prot sind in sys/mman.h wie folgt definiert:

PROT_READ

Seite kann gelesen werden.

PROT_WRITE

Seite kann geschrieben werden.

PROT_EXEC

Seite kann ausgeführt werden.

PROT_NONE

auf Seite kann nicht zugegriffen werden.

Falls mprotect() fehlschlägt, die Ursache aber nicht EINVAL ist, kann es sein, dass die Zugriffsrechte einiger Seiten in dem angegebenen Bereich [addr, addr + len) bereits geändert wurden. Wenn der Fehler an der Adresse addr2 auftritt, dann werden die Zugriffsrechte aller ganzen Seiten im Bereich [addr, addr2] verändert.

Returnwert

0

bei Erfolg.

 

-1

bei Fehler. errno wird gesetzt, um den Fehler anzuzeigen.

Fehler

Unter den folgenden Bedingungen schlägt die Funktion mprotect() fehl und setzt errno auf die folgenden Werte: 

 

EACCES

prot enthält einen Wert, der nicht zu den Zugriffsrechten des Prozesses auf die zu Grunde liegende Datei passt.

 

EAGAIN

prot enthält den Wert PROT_WRITE für eine Abbildung vom Typ MAP_PRIVATE und es tritt ein Speicherengpass auf, d.h. die Speicherressourcen zum Reservieren und Sperren der privaten Seite reichen nicht aus.

 

EINVAL

addr ist kein Vielfaches der durch sysconf() vorgegebenen Seitengröße
oder
das Argument len enthält einen Wert kleiner oder gleich 0.

 

ENOMEM

Adressen im Bereich [addr, addr + len) sind für den Adressbereich des Prozesses ungültig, oder es sind eine oder mehrere Seiten angegeben, welche nicht abgebildet sind.

Siehe auch

mmap(), sysconf(), sys/mman.h.