Provided by:
manpages-de-dev_0.10-1_all 
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.
"UBERSICHT
#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
tatsachliche Platz, an den das Objekt projiziert wurde, wird von mmap
zuruckgegeben. Der Parameter prot beschreibt den gewunschte
Speicherschutz. Er besteht aus folgenden Bits:
PROT_EXEC
Die Seiten konnen ausgefuhrt werden.
PROT_READ
Die Seiten durfen gelesen werden.
PROT_WRITE
Die Seiten durfen beschrieben werden.
Der Parameter flags gibt den Typ des zu projizierenden Objekts und
Projektionsoptionen an, sowie ob Veranderungen an der Kopie des
projizierten Objekts fur 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 SeitengroBe sein. Von der Verwendung dieser
Option wird abgeraten.
MAP_SHARED
Die Seiten durfen 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
zusatzlich noch MAP_DENYWRITE, MAP_EXECUTABLE und MAP_ANON(YMOUS).
Der munmap-Systemaufruf loscht die Projektionen im angegebenen
Speicherbereich. Zukunftige Zugriffe auf diesen Adressraum erzeugen
einen Fehler vom Typ "invalid memory reference" - Ungultiger
Speicherzugriff.
R"UCKGABEWERT
Bei Erfolg gibt mmap einen Zeiger auf den projizierten Speicherbereich
zuruck. Bei Fehlern wird MAP_FAILED (-1) zuruckgegeben und errno
entsprechend gesetzt. Bei erfolgreicher Ausfuhrung gibt munmap 0
zuruck, bei Fehlern -1 und setzt errno (meistens auf EINVAL).
FEHLER
EBADF fd ist kein gultiger Dateideskriptor (und MAP_ANONYMOUS wurde
nicht angegeben).
EACCES MAP_PRIVATE wurde angegeben, aber fd wurde nicht zum Lesen
geoffnet. Oder MAP_SHARED wurde spezifiziert, PROT_WRITE ist
gesetzt und fd ist nicht zum Schreiben geoffnet.
EINVAL Die Adressen, die durch start, length und offset angegeben
wurden, sind ungultig. (Z.B. sind sie zu groB oder nicht an der
SpeicherseitengroBe ausgerichtet.)
ETXTBUSY
MAP_DENYWRITE wurde angegeben, aber das Objekt, das durch fd
bezeichnet wurde, ist zum Schreiben geoffnet.
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 Verfugung.
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.