Loading

NOM

       remap_file_pages - Créer une projection non linéaire d’un fichier

SYNOPSIS

       #define _GNU_SOURCE
       #include <sys/mman.h>

       int remap_file_pages(void *addr, size_t size, int prot,
                            ssize_t pgoff, int flags);

       L’appel   système   remap_file_pages()   est  utilisé  pour  créer  une
       projection non linéaire, c’est-à-dire une projection dans laquelle  les
       pages   du  fichier  sont  projetées  en  mémoire  dans  un  ordre  non
       séquentiel. L’avantage d’utiliser remap_file_pages() au lieu  de  faire
       des  appels répétés à mmap(2) est que la première approche n’impose pas
       au noyau de créer des structures de données VMA (Virtual Memory  Area :
       zone mémoire virtuelle) supplémentaires.

       Pour  créer  une  projection  non  linéaire,  nous allons effectuer les
       étapes suivantes :

       1. Utiliser mmap(2) pour créer une  projection  (qui  est  initialement
          linéaire).   Cette   projection  doit  être  créée  avec  l’attribut
          MAP_SHARED.

       2. Utiliser  un  ou  plusieurs   appels   à   remap_file_pages()   pour
          réorganiser  la  correspondance  entre les pages de la projection et
          les pages du fichier. Il est possible d’accéder à la même page  d’un
          fichier dans plusieurs endroits de la région projetée.

       Les  paramètres pgoff et size spécifient la région du fichier à reloger
       dans la projection : pgoff est  un  décalage  de  fichier  (Ndt :  file
       offset)  dans  l’unité  de  taille  de  page  du  système ; size est la
       longueur de la région en octets.

       Le paramètre addr sert à deux choses. Tout  d’abord,  il  identifie  la
       projection  des  pages  que l’on souhaite réorganiser. Ainsi, addr doit
       être une adresse tombant dans une région précédemment projetée  par  un
       appel  à mmap(2). Ensuite, addr spécifie l’adresse à laquelle les pages
       du fichier identifiées par pgoff et size seront placées.

       Les valeurs spécifiées dans addr et size doivent être des multiples  de
       la  taille  de page système. Si elles ne le sont pas, le noyau arrondit
       par dfaut les deux valeurs au multiple  de  taille  de  page  le  plus
       proche.

       Le paramètre prot doit être spécifié à 0.

       Le  paramètre flags a la même signification que pour mmap(2), mais tous
       les attributs autres que MAP_NONBLOCK sont ignorés.

VALEUR RENVOYÉE

       S’il réussit, remap_file_pages() renvoie 0. S’il échoue, -1 est renvoyé
       et errno est positionnée en conséquence.

ERREURS

       EINVAL addr  ne  fait  pas référence à une projection valide créée avec
              l’attribut MAP_SHARED.

       EINVAL addr, size, prot ou pgoff n’est pas valable.

VERSIONS

       L’appel système remap_file_pages() est apparu dans  Linux  2.5.46 ;  la
       glibc le gère depuis la version 2.3.3.

CONFORMITÉ

       L’appel système remap_file_pages() est spécifique à Linux.

VOIR AUSSI

       getpagesize(2),  mmap(2),  mmap2(2),  mprotect(2), mremap(2), msync(2),
       feature_test_macros(7)

COLOPHON

       Cette page fait partie de  la  publication  3.23  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      être       trouvées       à       l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette  page  de  manuel  a été traduite et mise à jour par Alain Portal
       <aportal AT  univ-montp2  DOT  fr>  entre  2004  et  2006,  et  mise  à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
       francophone de traduction de Debian.

       Veuillez   signaler   toute   erreur   de   traduction  en  écrivant  à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous  pouvez  toujours avoir accès à la version anglaise de ce document
       en utilisant la commande « man -L C <section> <page_de_man> ».