Provided by: manpages-de-dev_0.5-4.1ubuntu1_all bug

BEZEICHNUNG

       mmap, munmap - lege Dateien oder Devices in Speicherbereich

Ü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.