Provided by: manpages-fr-dev_3.65d1p1-1_all bug

NOM

       move_pages - Déplacer des pages individuelles d'un processus sur un autre nœud

SYNOPSIS

       #include <numaif.h>

       long move_pages(int pid, unsigned long count, void **pages,
                       const int *nodes, int *status, int flags);

       Effectuez l'édition des liens avec l'option -lnuma.

DESCRIPTION

       move_pages() déplace les pages indiqué du processus pid dans les nœuds indiqués par nodes.
       Le résultat du déplacement est reflété dans  status.  Les  drapeaux  flags  indiquent  des
       contraintes sur les pages à déplacer.

       pid  est  l'identifiant  du  processus  dans lequel des pages doivent être déplacées. Pour
       déplacer  des  pages  dans  un  autres  processus,   l'appelant   doit   être   privilégié
       (CAP_SYS_NICE)  ou  l'identifiant  utilisateur réel ou effectif du processus appelant doit
       correspondre à l'identifiant utilisateur réel ou sauvé du processus cible. Si pid vaut  0,
       alors move_pages() déplace des pages du processus appelant.

       count  est  le  nombre de pages à déplacer. Il définit la taille des trois tableaux pages,
       nodes et status.

       pages est un tableau de pointeurs vers des pages à déplacer. Ces  pointeurs  doivent  être
       alignés sur des limites de pages. Les adresses sont indiquées comme elles sont vues par le
       processus indiqué par pid.

       nodes est un tableau d'entiers qui indiquent les emplacements  voulus  pour  chaque  page.
       Chaque  élément  du  tableau est un numéro de nœud. nodes peut aussi être NULL, auquel cas
       move_pages() ne déplace aucune page mais renvoie dans status le nœud où chaque page réside
       actuellement.  Obtenir  l'état  de chaque page peut être nécessaire pour trouver les pages
       qui doivent être déplacées.

       status est un tableau d'entiers qui renvoie l'état de chaque page. Le tableau ne  contient
       des valeurs correctes que si move_pages() n'a pas renvoyé d'erreur.

       flags indique quels types de page déplacer. MPOL_MF_MOVE signifie que seules les pages qui
       ne  peuvent  être  utilisées  qu'exclusivement  par  le   processus   sont   à   déplacer.
       MPOL_MF_MOVE_ALL  signifie que les pages partagées entre plusieurs processus peuvent aussi
       être  déplacée.  Le  processus  doit  être   privilégié   (CAP_SYS_NICE)   pour   utiliser
       MPOL_MF_MOVE_ALL.

   États des pages dans le tableau array
       Les valeurs suivantes peuvent être renvoyées dans chaque élément du tableau status.

       0..MAX_NUMNODES
              Indique le nœud sur lequel la page réside.

       -EACCES
              La  page  est  projetée  par  plusieurs  processus  et ne peut être déplacée que si
              MPOL_MF_MOVE_ALL est utilisé.

       -EBUSY La page est actuellement occupée et ne peut être déplacée. Essayez plus tard.  Ceci
              arrive  si  la page est utilisée pour des entrées/sorties ou si une autre partie du
              noyau conserve une référence sur la page.

       -EFAULT
              C'est une page nulle ou la zone mémoire n'est pas projetée par le processus.

       -EIO   Impossible de réécrire une page. La  page  doit  être  réécrite  pour  la  déplacer
              puisque  la  page est sale et que le système de fichiers ne fournit pas de fonction
              de migration qui permettrait le déplacement de pages sales.

       -EINVAL
              Une page sale ne peut pas être déplacée. Le système de fichiers ne fournit  pas  de
              fonction de déplacement et n'a pas la possibilité de réécrire la page.

       -ENOENT
              La page n'est pas présente.

       -ENOMEM
              Impossible d'allouer de la mémoire sur le nœud cible.

VALEUR RENVOYÉE

       S'il  réussit,  move_pages() renvoie zéro. En cas d'erreur, il renvoie -1 et remplit errno
       avec la valeur d'erreur.

ERREURS

       E2BIG  Trop de pages à déplacer.

       EACCES Un des nœuds cibles n'est pas autorisés dans l'ensemble de processeurs en cours.

       EFAULT Impossible d'accéder à un tableau en paramètre.

       EINVAL Un drapeau autre que MPOL_MF_MOVE ou MPOL_MF_MOVE_ALL a été indiqué ou on a  essayé
              de déplacer des pages d'un thread noyau.

       ENODEV Un des nœuds cibles n'est pas connecté.

       ENOENT Aucune page nécessitant d'être déplacée n'a été trouvée. Toutes les pages sont déjà
              sur le nœud cible, absentes, avec une adresse non  valable  ou  ne  pouvaient  être
              déplacées parce qu'elles étaient projetées par plusieurs processus.

       EPERM  L'appelant    a   indiqué   MPOL_MF_MOVE_ALL   sans   les   privilèges   suffisants
              (CAP_SYS_NICE). Ou bien l'appelant a essayé de déplacer des  pages  d'un  processus
              appartenant   à  un  autre  utilisateur  mais  n'était  pas  autorisé  à  le  faire
              (CAP_SYS_NICE).

       ESRCH  Le processus n'existe pas.

VERSIONS

       move_pages() est apparu pour la première fois sous Linux avec le noyau 2.6.18.

CONFORMITÉ

       Cet appel système est spécifique à Linux.

NOTES

       Pour des informations sur la prise en charge par des bibliothèques, consultez numa(7).

       Utilisez get_mempolicy(2) avec le drapeau MPOL_F_MEMS_ALLOWED pour obtenir l'ensemble  des
       nœuds  autorisés  par  l'ensemble de processeurs courant. Notez que cette information peut
       changer à tout instant  d'une  fait  d'une  reconfiguration  manuelle  ou  automatique  de
       l'ensemble de processeurs.

       L'utilisation  de  cette fonction peut causer des pages dont l'emplacement (le nœud) viole
       la politique mémoire établie pour les  adresses  indiquées  (voir  mbind(2))  ou  pour  le
       processus  indiqué  (consultez set_mempolicy(2)). En d'autres termes, la politique mémoire
       ne restreint pas les nœuds de destination utilisés par move_pages().

       L'en-tête <numaif.h> n'est pas inclus dans la  glibc,  mais  nécessite  l'installation  de
       libnuma-devel (ce nom peut varier suivant les distributions).

VOIR AUSSI

       get_mempolicy(2),  mbind(2),  set_mempolicy(2), numa(3), numa_maps(5), cpuset(7), numa(7),
       migratepages(8), numastat(8)

COLOPHON

       Cette page fait partie de la publication 3.65 du projet man-pages Linux.  Une  description
       du  projet  et  des  instructions  pour  signaler  des  anomalies  peuvent être trouvées à
       l'adresse http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis   2010,   cette   traduction   est   maintenue   à   l'aide   de    l'outil    po4a
       <http://po4a.alioth.debian.org/>  par l'équipe de traduction francophone au sein du projet
       perkamon <http://perkamon.alioth.debian.org/>.

       Alain Portal <http://manpagesfr.free.fr/> (2008).

       Veuillez     signaler     toute     erreur     de     traduction     en     écrivant     à
       <debian-l10n-french@lists.debian.org>   ou   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> ».