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.