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.44 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> ».