GET_MEMPOLICY(2)

NOM
get_mempolicy - Obtenir la politique mémoire d'un processus

SYNOPSIS
#include <numaif.h>

int get_mempolicy(int *mode, unsigned long *nodemask,
                  unsigned long maxnode, unsigned long addr,
                  unsigned long flags);

Lier avec -lnuma

DESCRIPTION
get_mempolicy() permet d'obtenir la politique NUMA du processus appelant ou d'une adresse mémoire suivant la configuration de flags. Une machine NUMA a différents contrôleurs mémoire à différentes distances de CPU particulières. La politique de la mémoire définit dans quel noeud la mémoire pour ce processus sera allouée. Si flags vaut 0, l'information sur la politique par défaut du processus appelant (comme celle configurée avec set_mempolicy(2)) est renvoyée. Si flags spécifie MPOL_F_ADDR, l'information renvoyée est celle qui gouverne l'adresse mémoire donnée dans addr. Cette politique peut être différente de la politique par défaut du processus si on a utilisé mbind(2) ou l'une des fonctions d'aide décrites dans numa(3) pour définir une politique pour la plage mémoire contenant l'adresse addr. Si l'argument mode n'est pas NULL, get_mempolicy() stockera le mode de politique de la politique NUMA requise à l'endroit pointé par cet argument. Si nodemask n'est pas NULL, le masque de noeud associé à la politique sera stockée à l'emplacement pointé par cet argument. maxnode spécifie le nombre d'identifiants de noeuds qui peuvent être stockés dans nodemask, c'est-à-dire, la valeur maximum de l'identifiant de noeud plus un. La valeur indiquée dans maxnode est toujours arrondie à un multiple de sizeof(unsigned long). Si flags indique à la fois MPOL_F_NODE et MPOL_F_ADDR, get_mempolicy() renverra, à l'endroit pointé par mode, l'identifiant de noeud du noeud sur lequel l'adresse addr est allouée. Si aucune page n'a encore été allouée pour l'adresse spécifiée, get_mempolicy() allouera une page comme si le processus avait réalisé un accès en lecture [chargement] à cette adresse, et renverra l'identifiant du noeud où cette page a été allouée. Si flags indique MPOL_F_NODE mais pas MPOL_F_ADDR et que la politique actuelle est MPOL_INTERLEAVE, get_mempolicy() renverra à l'endroit pointé par un argument mode non nul l'identifiant du prochain noeud à utiliser pour l'entrelacement des pages internes du noyau allouées au nom du processus. Ces allocations incluent des pages pour les fichiers de mémoire projetée dans les plages de mémoire projetée du processus en utilisant l'appel mmap(2) avec l'attribut MAP_PRIVATE pour les accès en lecture, et dans les plages de mémoire projetée avec l'attribut MAP_SHARED pour tous les autres accès. D'autres valeurs d'attribut sont réservées. Pour une vue d'ensemble des politiques possibles, voir set_mempolicy(2).

VALEUR RENVOYÉE
S'il réusit, get_mempolicy() renvoie 0 ; s'il échoue, il renvoie -1 et écrit errno en conséquence.

ERREURS

EFAULT
    Une partie de la plage mémoire spécifiée par nodemask et maxnode pointe en dehors de votre espace d'adressage accessible.

EINVAL
    La valeur spécifiée par maxnode est inférieure au nombre d'identifiants de noeud pris en charge par le système. Ou flags spécifie des valeurs autres que MPOL_F_NODE ou MPOL_F_ADDR ; ou flags spécifie MPOL_F_ADDR et addr est NULL, ou flags ne spécifie pas MPOL_F_ADDR et addr n'est pas NULL. Ou flags spécifie MPOL_F_NODE mais pas MPOL_F_ADDR et la politique actuelle du processus n'est pas MPOL_INTERLEAVE. (Et il y a d'autres cas EINVAL.)

CONFORMITÉ
Cet appel est spécifique à Linux.

NOTES
Si le mode de la politique de processus ou la politique gouvernant les allocations à l'adresse spécifiée est MPOL_PREFERRED et si cette politique a été installée avec nodemask vide (spécifiant une allocation locate), get_mempolicy() renverra le masque des identifiants de noeuds en ligne à l'emplacement pointé par un argument nodemask non NULL. Ce masque ne prend pas en considération les restrictions imposées administrativement sur le contexte de processus.

  Versions et prise en charge bibliothèque
Voir mbind(2).

VOIR AUSSI
mbind(2), mmap(2), set_mempolicy(2), numactl(8), numa(3)

TRADUCTION

Ce document est une traduction réalisée par Alain Portal <aportal AT univ-montp2 DOT fr> le 21 juillet 2006 et révisée le 22 décembre 2007.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 2 get_mempolicy ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.