Date création : 27-03-2008 20:23:44
 Vous êtes dans : GNU/Linux Astuces / Pages man [Section2 - Appels système]
ALLOC_HUGEPAGES
Index
- NOM
- SYNOPSIS
- DESCRIPTION
- VALEUR RENVOYÉE
- ERREURS
- CONFORMITÉ
- FICHIERS
- NOTES
- TRADUCTION
NOM
alloc_hugepages, free_hugepages - Allouer ou libérer des pages immenses
SYNOPSIS
void *alloc_hugepages(int key, void *addr, size_t len,
int prot, int flag);
int free_hugepages(void *addr);
DESCRIPTION
Les appels système alloc_hugepages() et free_hugepages() ont été
introduits dans Linux 2.5.36 et retirés à nouveau dans le 2.5.54. Ils
n'existent que sur i386 et ia64 (compilation avec l'option
CONFIG_HUGETLB_PAGE). Dans Linux 2.4.20 le numéro d'appel système existe,
mais renvoie toujours ENOSYS.
Sur un i386, le mécanisme matériel de gestion mémoire manipule des pages
ordinaires (4 Ko) et des pages immenses (2 à 4 Mo). De même, l'ia64
connaît des pages immenses de diverses tailles. Ces appels système servent à
projeter ces pages immenses dans l'espace mémoire du processus ou à les
libérer. Les pages immenses sont verrouillées en mémoire et jamais swappées.
Le paramètre key est un identifiant. Lorsqu'il vaut zéro, les pages sont
privées et non héritées par les processus descendants. Lorsqu'il est
positif, les pages sont partagées avec les autres applications utilisant la
même key, et héritées par les processus enfants.
Le paramètre addr de free_hugepages() indique quelle page doit être
libérée --- il a été renvoyé lors de l'appel alloc_hugepages(). (La
mémoire n'est véritablement libérée que lorsque tous ses utilisateurs la
relâchent). Le paramètre addr de alloc_hugepages() est un désir que le
noyau peut suivre ou non. Les adresses doivent être correctement alignées.
Le paramètre len est la taille du segment désiré. Il doit s'agir d'un
multiple de la taille d'une page immense.
Le paramètre prot indique le type de protection du segment. Il s'agit
d'une association de PROT_READ, PROT_WRITE, PROT_EXEC.
Le paramètre flag est ignoré, sauf si key est positif. Dans ce cas, si
flag vaut IPC_CREAT, alors un nouveau segment de page énorme est créé si
aucun n'existe avec cette clé. Sinon, l'erreur ENOENT est renvoyé si aucun
segment correspondant à la clé n'existe.
VALEUR RENVOYÉE
S'il réussit alloc_hugepages() renvoie l'adresse du segment alloué, et
free_hugepages() renvoie zéro. En cas d'erreur, ils renvoient -1 et
remplissent errno avec le code d'erreur.
ERREURS
- ENOSYS
-
L'appel système n'est pas supporté par ce noyau.
CONFORMITÉ
Ces appels n'existent que dans les noyaux Linux 2.5.36 à 2.5.54. Ils sont
spécifiques à Linux sur processeurs Intel, et ne doivent pas être employés
sur des programmes conçus pour être portables. De plus, les numéros de ces
appels système ont été marqués comme libres, et les programmes les utilisant
risquent de se comporter de manière imprévisible dans l'avenir.
FICHIERS
/proc/sys/vm/nr_hugepages Nombre de pages énormes configurées. Peut être
lu ou écrit.
/proc/meminfo Indique le nombre de pages énormes configurées, et leurs
tailles dans les trois variables HugePages_Total, HugePages_Free,
Hugepagesize.
NOTES
Ces appels système ont disparu. Maintenant, le système de fichiers hugetblfs
peut être employé à leur place. La mémoire correspondant aux pages énormes
(si le processeur les supporte) peut être obtenue par un mmap() des
fichiers de ce système de fichiers virtuel.
Le nombre maximal de pages énormes peut être indiqué en utilisant l'argument
hugepages= au boot.
TRADUCTION
Cette page de manuel a été traduite et mise à jour par
Christophe Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003,
puis par Alain Portal <aportal AT univ-montp2 DOT fr> jusqu'en 2006.
La traduction de cette page de manuel est basée sur les traductions
disponibles sur http://manpagesfr.free.fr/,
mais est gérée par l'équipe francophone de traduction de Debian
au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction 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> ».
|