Provided by: manpages-de-dev_0.10-1_all bug

BEZEICHNUNG

       mmap, munmap - lege Dateien oder Devices in Speicherbereich

       Diese   Handbuchseite   ist   eventuell   veraltet.   Im   Zweifelsfall   ziehen  Sie  die
       englischsprachige Handbuchseite zu Rate, indem Sie

              man -LC 2 mmap

       eingeben.

ÜBERSICHT

       #include <unistd.h>
       #include <sys/mman.h>

       #ifdef _POSIX_MAPPED_FILES

       void * mmap(void *start, size_t length, int prot , int flags, int fd, off_t offset);

       int munmap(void *start, size_t length);

       #endif

BESCHREIBUNG

       Die Funktion mmap projiziert length Bytes von der Datei (oder einem anderen Objekt) fd  ab
       Offset  offset  in  einen  Speicherbereich,  vorzugsweise ab der Adresse start. Die letzte
       Adresse ist nur ein Tip und wird normalerweise nicht angegeben, indem 0 eingetragen  wird.
       Der  tatsächliche  Platz, an den das Objekt projiziert wurde, wird von mmap zurückgegeben.
       Der Parameter prot beschreibt den gewünschte  Speicherschutz.  Er  besteht  aus  folgenden
       Bits:

       PROT_EXEC
              Die Seiten können ausgeführt werden.

       PROT_READ
              Die Seiten dürfen gelesen werden.

       PROT_WRITE
              Die Seiten dürfen beschrieben werden.

       Der Parameter flags gibt den Typ des zu projizierenden Objekts und Projektionsoptionen an,
       sowie ob Veränderungen an der Kopie des projizierten Objekts für den Prozess  privat  sind
       oder mit anderen Referenzen gemeinsam genutzt werden. Er besteht aus folgenden Bits:

       MAP_FIXED
              Verwende  keine  andere  Adresse  also  die angegebene. Wenn die angegebene Adresse
              nicht benutzt werden kann, wird mmap fehlschlagen. Wenn  MAP_FIXED  angegeben  ist,
              muss  start  ein  Vielfaches der Seitengröße sein. Von der Verwendung dieser Option
              wird abgeraten.

       MAP_SHARED
              Die Seiten dürfen mit  anderen  Prozessen,  die  dieses  Objekt  ebenfalls  in  den
              Speicher projizieren, gemeinsam benutzt werden.

       MAP_PRIVATE
              Lege eine private Copy-on-Write-Projektion des Objekts an.

       Die   obigen  drei  Flags  sind  in  POSIX.4  beschrieben.  Linux  kennt  zusätzlich  noch
       MAP_DENYWRITE, MAP_EXECUTABLE und MAP_ANON(YMOUS).

       Der munmap-Systemaufruf löscht die Projektionen im angegebenen Speicherbereich. Zukünftige
       Zugriffe  auf diesen Adressraum erzeugen einen Fehler vom Typ "invalid memory reference" -
       Ungültiger Speicherzugriff.

RÜCKGABEWERT

       Bei Erfolg gibt mmap einen Zeiger auf den projizierten Speicherbereich zurück. Bei Fehlern
       wird  MAP_FAILED  (-1)   zurückgegeben  und  errno entsprechend gesetzt. Bei erfolgreicher
       Ausführung gibt munmap 0 zurück, bei Fehlern -1 und setzt errno (meistens auf EINVAL).

FEHLER

       EBADF  fd ist kein gültiger Dateideskriptor (und MAP_ANONYMOUS wurde nicht angegeben).

       EACCES MAP_PRIVATE  wurde  angegeben,  aber  fd  wurde  nicht  zum  Lesen  geöffnet.  Oder
              MAP_SHARED  wurde  spezifiziert,  PROT_WRITE  ist  gesetzt  und  fd  ist  nicht zum
              Schreiben geöffnet.

       EINVAL Die Adressen, die durch start, length und offset angegeben wurden,  sind  ungültig.
              (Z.B. sind sie zu groß oder nicht an der Speicherseitengröße ausgerichtet.)

       ETXTBUSY
              MAP_DENYWRITE  wurde angegeben, aber das Objekt, das durch fd bezeichnet wurde, ist
              zum Schreiben geöffnet.

       EAGAIN Die Datei ist gelockt (wird von einem anderen Prozess oder  Thread  gehalten)  oder
              zuviel Speicher ist gelockt.

       ENOMEM Es steht kein Speicher mehr zur Verfügung.

KONFORM ZU

       POSIX.4.

SIEHE AUCH

       getpagesize(2),  msync(2),  shm_open(2), B.O. Gallmeister POSIX.4 O'Reilly pp. 128-129 and
       389-391.