NOM¶
remap_file_pages - Créer une projection non linéaire d'un fichier
SYNOPSIS¶
#define _GNU_SOURCE /* Consultez feature_test_macros(7) */
#include <sys/mman.h>
int remap_file_pages(void *addr, size_t size, int prot,
ssize_t pgoff, int flags);
DESCRIPTION¶
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 défaut 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.
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)
COLOPHON¶
Cette page fait partie de la publication 3.65 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¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
<
http://po4a.alioth.debian.org/> par l'équipe de traduction
francophone au sein du projet perkamon
<
http://perkamon.alioth.debian.org/>.
Alain Portal <
http://manpagesfr.free.fr/> (2004-2006). Julien
Cristau et l'équipe francophone de traduction de
Debian (2006-2009).
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> ».