remap_file_pages(2) System Calls Manual remap_file_pages(2) NOM remap_file_pages - Creer une projection non lineaire d'un fichier BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #define _GNU_SOURCE /* Consultez feature_test_macros(7) */ #include [[obsolete]] int remap_file_pages(void addr[.size], size_t size, int prot, size_t pgoff, int flags); DESCRIPTION Note : cet appel systeme a ete indique comme obsolete a partir de Linux 3.16. Dans Linux 4.0, l'implementation a ete remplacee par une emulation plus lente dans le noyau. Le peu d'applications qui utilisent cet appel systeme devraient envisager de passer a des alternatives. Ce changement a eu lieu, car le code du noyau de cet appel systeme etait complexe et, semble-t-il, peu utilise voire inusite. S'il avait quelques cas d'utilisation dans des applications de base de donnees sur des systemes 32 bits, ces cas n'existent plus sur des systemes 64 bits. L'appel systeme remap_file_pages() est utilise pour creer une projection non lineaire, c'est-a-dire une projection dans laquelle les pages du fichier sont projetees en memoire dans un ordre non sequentiel. L'avantage d'utiliser remap_file_pages() au lieu de faire des appels repetes a mmap(2) est que la premiere approche n'impose pas au noyau de creer des structures de donnees VMA (Virtual Memory Area : zone memoire virtuelle) supplementaires. Pour creer une projection non lineaire, nous allons effectuer les etapes suivantes : 1. Utiliser mmap(2) pour creer une projection (qui est initialement lineaire). Cette projection doit etre creee avec l'attribut MAP_SHARED. 2. Utiliser un ou plusieurs appels a remap_file_pages() pour reorganiser la correspondance entre les pages de la projection et les pages du fichier. Il est possible d'acceder a la meme page d'un fichier dans plusieurs endroits de la region projetee. Les parametres pgoff et size specifient la region du fichier a reloger dans la projection : pgoff est un decalage de fichier (Ndt : file offset) dans l'unite de taille de page du systeme ; size est la longueur de la region en octets. Le parametre addr sert a deux choses. Tout d'abord, il identifie la projection des pages que l'on souhaite reorganiser. Ainsi, addr doit etre une adresse tombant dans une region precedemment projetee par un appel a mmap(2). Ensuite, addr specifie l'adresse a laquelle les pages du fichier identifiees par pgoff et size seront placees. Les valeurs specifiees dans addr et size doivent etre des multiples de la taille de page systeme. Si elles ne le sont pas, le noyau arrondit par defaut les deux valeurs au multiple de taille de page le plus proche. Le parametre prot doit etre specifie a 0. Le parametre flags a la meme signification que pour mmap(2), mais tous les attributs autres que MAP_NONBLOCK sont ignores. VALEUR RENVOYEE S'il reussit, remap_file_pages() renvoie 0. S'il echoue, -1 est renvoye et errno est positionne pour indiquer l'erreur. ERREURS EINVAL addr ne fait pas reference a une projection valide creee 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 cree des projections non lineaires que sur les systemes de fichiers en memoire comme tmpfs(5), hugetlbfs ou ramfs. Sur les systemes de fichiers avec cache, remap_file_pages() n'est pas beaucoup plus efficace que mmap(2) pour ajuster les parties du fichier associees a leur adresse. VOIR AUSSI getpagesize(2), mmap(2), mmap2(2), mprotect(2), mremap(2), msync(2) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Jean-Philippe MENGUAL Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 remap_file_pages(2)