Manpages

NAAM

mmap, munmap − leg-uit of de-leg-uit bestanden of aparaten in het werkgeheugen

OVERZICHT

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

caddr_t mmap(void *start, size_t lengte, int prot , int vlaggen, int bi, off_t positie);

int munmap(void *start, size_t lengte);

BESCHRIJVING

De mmap functie vraagt om lengte bytes uit te leggen vanaf positie in het bestand (of ander object) opgegeven door bi in het werkgeheugen, bij voorkeur op adres start. Dit laatste adres is alleen een wenk en wordt gewoonlijk opgegeven als 0. De daadwerkelijke plaats waar het object uit gelegd wordt, wordt teruggegeven door mmap. Het prot argument beschrijft de verlangde geheugen bescherming. Het heeft de bits

PROT_EXEC

{bescherm voer-uit} Pagina’s mogen uitgevoerd worden.

PROT_READ

{bescherm lees} Pagina’s mogen gelezen worden.

PROT_WRITE

{bescherm schrijf} Pagina’s mogen geschreven worden.

PROT_NONE

{bescherm niks} Pagina’s zijn niet toegankelijk.

De vlaggen grootheid geeft het soort uit-gelegd voorwerp, uit-leg keuzes en of gemaakte aanpassingen op de geïnterpreteerde kopieerde pagina persoonlijk voor het proces zijn of dat ze gedeeld worden met andere verwijzingen. Het heeft bits

MAP_FIXED

{kaart vast} Kies geen verschillend adres dan het opgegevene. Als het opgegeven adres niet gebruikt kan worden zal mmap falen. Als MAP_FIXED wordt opgegeven moet start een meervoud van de paginagrootte zijn. Gebruik van deze keuze wordt ontmoedigd.

MAP_SHARED

{kaart gedeeld} Deel deze uit-legging met alle andere processen die dit voorwerp uit-leggen.

MAP_PRIVATE

{kaart persoonlijk} Maak een persoonlijke kopieëring-bij-schrijven {"copy-on-write"} uit-legging.

Je moet precies één van MAP_SHARED of MAP_PRIVATE opgeven.

De bovenstaande drie vlaggen worden beschreven in POSIX.1b (eerder POSIX.4). Linux kent ook MAP_DENYWRITE {kaart weiger schrijf}, MAP_EXECUTABLE {kaart uitvoerbare} en MAP_ANON(YMOUS) {kaart anoniem}

De mmap {geheugen de-uit-leg} systeem aanroep schrapt de uitleggingen voor het opgegeven adres interval, en veroorzaakt dat verdere verwijzingen naar adressen binnen het interval een ongeldige geheugen verwijzing geven.

TERUGGEEF WAARDE

Bij success geeft mmap een pointer naar een uit-gelegd gebied. Bij falen wordt −1 teruggegeven en errno wordt naar behoren gezet. Bij success geeft mmap 0 terug, bij falen −1 en errno wordt gezet (waarschijnlijk naar EINVAL).

FOUTEN

EBADF

{slechte bi} bi is geen geldige bestandindicator (en MAP_ANONYMOUS was niet gezet).

EACCES

{toegang} MAP_PRIVATE {kaart persoonlijk} werd gevraagd, maar bi is niet open voor lezen. Of MAP_SHARED werd gevraagd en PROT_WRITE is gezet, bi is niet open voor schrijven.

EINVAL

{ongeldig} We houden niet van start of lengte of positie. (o.a., ze zijn te groot of niet opgelijnd met een PAGESIZE {pagina grootte} grens.

ETXTBUSY

{text bezig} MAP_DENYWRITE {kaart weiger schrijf} werd gezet maar het voorwerp opgegeven door bi is open voor schrijven.

EAGAIN

{opnieuw} Het bestand was vergrendelt of teveel geheugen was vergrendelt.

ENOMEM

{geen geheugen} Geen geheugen is beschikbaar.

VOLDOET AAN

SVr4, POSIX.1b (eerder POSIX.4), 4.4BSD. Svr4 beschrijft aanvullende fout codes ENXIO en ENODEV.

ZIE OOK

getpagesize(2) {krijg pagina maat}, msync(2) {geheugen harmonizeer}, shm_open(2) {?}, B.O. Gallmeister, POSIX.4, O’Reilly, pag. 128-129 en 389-391.

VERTALING

Dit is een handleiding uit manpages-dev 1.29. Alles wat tussen ’{’..’}’ staat is aanvullende vertaling, en hoort niet bij de originele handleiding. Email naar <manpages-nl [AT] nl.org>.

$Id: mmap.2,v 1.2 2005/01/31 09:44:37 wouter Exp $