Man page - remap_file_pages(2)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

remap_file_pages

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
STANDARDS
HISTORIQUE
NOTES
VOIR AUSSI
TRADUCTION

NOM

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

BIBLIOTHÈQUE

BibliothĂšque C standard ( libc , -lc )

SYNOPSIS

#define _GNU_SOURCE /* Consultez feature_test_macros(7) */
#include <sys/mman.h>

[[obsolĂšte]] int remap_file_pages(void addr [. size ], size_t size ,
int
prot , size_t pgoff , int flags );

DESCRIPTION

Note : cet appel systĂšme a Ă©tĂ© indiquĂ© comme obsolĂšte Ă  partir de Linux 3.16. Dans Linux 4.0, l’implĂ©mentation a Ă©tĂ© remplacĂ©e par une Ă©mulation plus lente dans le noyau. Le peu d’applications qui utilisent cet appel systĂšme devraient envisager de passer Ă  des alternatives. Ce changement a eu lieu, car le code du noyau de cet appel systĂšme Ă©tait complexe et, semble-t-il, peu utilisĂ© voire inusitĂ©. S’il avait quelques cas d’utilisation dans des applications de base de donnĂ©es sur des systĂšmes 32 bits, ces cas n’existent plus sur des systĂšmes 64 bits.

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Ă© pour indiquer l’erreur.

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.

STANDARDS

Linux.

HISTORIQUE

Linux 2.5.46, glibc 2.3.3.

NOTES

Depuis Linux 2.6.23, remap_file_pages () ne crĂ©e des projections non linĂ©aires que sur les systĂšmes de fichiers en mĂ©moire comme tmpfs (5), hugetlbfs ou ramfs. Sur les systĂšmes de fichiers avec cache, remap_file_pages () n’est pas beaucoup plus efficace que mmap (2) pour ajuster les parties du fichier associĂ©es Ă  leur adresse.

VOIR AUSSI

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

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Philippe MENGUAL <jpmengual@debian.org>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .