MMAP(2)            Manuel du programmeur Linux            MMAP(2)


NOM
       mmap,  munmap  -  Etablir  /  supprimer  une projection en
       mémoire (map / unmap) des fichiers ou des périphériques.

SYNOPSIS
       #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

DESCRIPTION
       La  fonction  mmap  demande  la  projection  en mémoire de
       length octets commencant à la position  offset  depuis  un
       fichier  (ou un autre objet) indiqué par fd, de préférence
       à l'adresse pointée par start.  Cette adresse n'est qu'une
       préférence,  généralement  0.   La  véritable  adresse  où
       l'objet est projeté est renvoyée par la fonction mmap.

       L'argument prot indique la protection que l'on désire pour
       cette zone de mémoire.  Les protections possibles sont les
       suivantes :

       PROT_EXEC
              On peut exécuter du code dans la zone mémoire.

       PROT_READ
              On peut lire le contenu de la zone mémoire

       PROT_WRITE
              On peut écrire dans la zone mémoire.

       PROT_NONE
              Le contenu de la zone memoire est inaccessible.

       Le paramètre flags indique le type de fichier projeté, les
       options  de projection, et si les modifications faites sur
       la portion projetée sont privées ou doivent etre partagées
       avec les autres références. Les options sont :

       MAP_FIXED
              N'utiliser  que l'adresse indiquée. Si c'est impos­
              sible, mmap échouera.  Si  MAP_FIXED  est  spécifié
              start doit être un multiple de la longueur de page.
              Il est déconseillé d'utiliser cette option.

       MAP_SHARED
              Partager la projection avec  tout  autre  processus



Linux                    19 Juillet 1997                        1





MMAP(2)            Manuel du programmeur Linux            MMAP(2)


              utilisant l'objet.

       MAP_PRIVATE
              Créer  une  projection privée, utilisant la méthode
              de copie à l'écriture.

       Vous devez indiquer soit MAP_SHARED, soit MAP_PRIVATE.

       Ces trois attributs sont décrits  dans  POSIX.1b  (ancien­
       nement  POSIX.4).   Linux  propose  également  les options
       MAP_DENYWRITE, MAP_EXECUTABLE et MAP_ANON(YMOUS).

       L'appel système munmap détruit la projection dans la  zone
       de   mémoire   spécifiée,  et  s'arrange  pour  que  toute
       référence ultérieure à cette zone  mémoire  déclenche  une
       erreur d'adressage.


VALEUR RENVOYÉE
       mmap  renvoie  un  pointeur  sur  la zone de mémoire, s'il
       réussit. En cas d'échec il  retourne  MAP_FAILED  (-1)  et
       errno contient le code d'erreur.

       munmap  renvoie 0 s'il réussit. En cas d'échec -1 est ren­
       voyé et errno contient le code d'erreur (probablement EIN­
       VAL).

ERREURS
       EBADF  fd  n'est  pas un descripteur de fichier valide (et
              MAP_ANONYMOUS n'était pas précisé).

       EACCES On demande une projection privée  MAP_PRIVATE  mais
              fd  n'est  pas ouvert en lecture, ou on demande une
              projection  partagée  MAP_SHARED  avec   protection
              PROT_WRITE, mais fd n'est pas ouvert en ecriture.

       EINVAL start  ou  length  ou  offset sont invalides.  (par
              exemple : zone trop grande, ou non alignée sur  une
              frontière de page).

       ETXTBUSY
              MAP_DENYWRITE  a  été réclamé mais fd est ouvert en
              écriture

       EAGAIN Le fichier est verrouillé, ou trop de  mémoire  est
              verrouillée.

       ENOMEM pas assez de mémoire.

CONFORMITÉ
       SVr4, POSIX.1b (anciennement POSIX.4), BSD 4.4. SVr4 docu­
       mente les codes d'erreur supplémentaires ENXIO et  ENODEV.





Linux                    19 Juillet 1997                        2





MMAP(2)            Manuel du programmeur Linux            MMAP(2)


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


TRADUCTION
       Christophe Blaess, 1997.


















































Linux                    19 Juillet 1997                        3