GET_MEMPOLICY(2)

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

SYNOPSIS
#include <numaif.h>

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

Utilisez -lnuma à l'édition de liens

DESCRIPTION
get_mempolicy() lit la politique NUMA du processus appelant ou d'une adresse en mémoire selon la configuration de flags. Une machine NUMA a plusieurs contrôleurs mémoire à différentes distances de CPU particulières. La politique mémoire définit dans quel nœud la mémoire sera allouée pour ce processus. 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 vaut 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 nœud associé à la politique sera stockée à l'emplacement pointé par cet argument. maxnode spécifie le nombre d'identifiants de nœuds qui peuvent être stockés dans nodemask, c'est-à-dire, la valeur maximum de l'identifiant de nœud 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 nœud du nœud 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 nœud 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 nœud à 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 renseigne 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 nœud 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 système 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 locale), get_mempolicy() renverra le masque des identifiants de nœuds 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 du processus.

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

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

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 17 juillet 2008.

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.