Provided by: manpages-fr-dev_3.27fr1.4-1_all bug

NOM

       move_pages  -  Deplacer  des  pages individuelles d'un processus sur un
       autre noeud

SYNOPSIS

       #include <numaif.h>

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

       Effectuez l'edition des liens avec l'option -lnuma.

DESCRIPTION

       move_pages() deplace les pages indique du processus pid dans les noeuds
       indiques par nodes. Le resultat du deplacement est reflete dans status.
       Les drapeaux flags indiquent des contraintes sur les pages a deplacer.

       pid est l'identifiant du processus dans lequel des pages  doivent  etre
       deplacees. Pour deplacer des pages dans un autres processus, l'appelant
       doit etre privilegie (CAP_SYS_NICE) ou l'identifiant  utilisateur  reel
       ou  effectif  du  processus  appelant doit correspondre a l'identifiant
       utilisateur reel ou sauve du processus cible.  Si  pid  vaut  0,  alors
       move_pages() deplace des pages du processus appelant.

       count est le nombre de pages a deplacer. Il definit la taille des trois
       tableaux pages, nodes et status.

       pages est un tableau de  pointeurs  vers  des  pages  a  deplacer.  Ces
       pointeurs  doivent  etre alignes sur des limites de pages. Les adresses
       sont indiquees comme elles sont vues par le processus indique par pid.

       nodes est un tableau d'entiers qui indiquent  les  emplacements  voulus
       pour  chaque  page.  Chaque  element du tableau est un numero de noeud.
       nodes peut aussi etre NULL, auquel cas move_pages() ne  deplace  aucune
       page   mais  renvoie  dans  status  le  noeud  ou  chaque  page  reside
       actuellement. Obtenir l'etat de chaque page peut etre  necessaire  pour
       trouver les pages qui doivent etre deplacees.

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

       flags  indique  quels types de page deplacer. MPOL_MF_MOVE signifie que
       seules les pages qui ne peuvent etre utilisees qu'exclusivement par  le
       processus  sont  a  deplacer.  MPOL_MF_MOVE_ALL  signifie que les pages
       partagees entre plusieurs processus peuvent  aussi  etre  deplacee.  Le
       processus   doit   etre   privilegie   (CAP_SYS_NICE)   pour   utiliser
       MPOL_MF_MOVE_ALL.

'Etats des pages dans le tableau array

       Les valeurs suivantes peuvent etre renvoyees  dans  chaque  element  du
       tableau status.

       0..MAX_NUMNODES
              Indique le noeud sur lequel la page reside.

       -EACCES
              La  page  est  projetee  par plusieurs processus et ne peut etre
              deplacee que si MPOL_MF_MOVE_ALL est utilise.

       -EBUSY La page est actuellement  occupee  et  ne  peut  etre  deplacee.
              Essayez  plus tard. Ceci arrive si la page est utilisee pour des
              entrees/sorties ou si une autre partie  du  noyau  conserve  une
              reference sur la page.

       -EFAULT
              C'est  une  page nulle ou la zone memoire n'est pas projetee par
              le processus.

       -EIO   Impossible de reecrire une page. La page doit etre reecrite pour
              la  deplacer  puisque  la  page  est  sale  et que le systeme de
              fichiers ne fournit pas de fonction de migration qui permettrait
              le deplacement de pages sales.

       -EINVAL
              Une  page sale ne peut pas etre deplacee. Le systeme de fichiers
              ne fournit  pas  de  fonction  de  deplacement  et  n'a  pas  la
              possibilite de reecrire la page.

       -ENOENT
              La page n'est pas presente.

       -ENOMEM
              Impossible d'allouer de la memoire sur le noeud cible.

VALEUR RENVOY'EE

       S'il reussit, move_pages() renvoie zero. En cas d'erreur, il renvoie -1
       et remplit errno avec la valeur d'erreur.

ERREURS

       E2BIG  Trop de pages a deplacer.

       EACCES Un des noeuds cibles n'est  pas  autorises  dans  l'ensemble  de
              processeurs en cours.

       EFAULT Impossible d'acceder a un tableau en parametre.

       EINVAL Un  drapeau  autre  que  MPOL_MF_MOVE  ou MPOL_MF_MOVE_ALL a ete
              indique ou on a essaye de deplacer des pages d'un thread noyau.

       ENODEV Un des noeuds cibles n'est pas connecte.

       ENOENT Aucune page necessitant d'etre deplacee n'a ete trouvee.  Toutes
              les  pages  sont  deja  sur  le  noeud cible, absentes, avec une
              adresse  non  valable  ou  ne  pouvaient  etre  deplacees  parce
              qu'elles etaient projetees par plusieurs processus.

       EPERM  L'appelant   a  indique  MPOL_MF_MOVE_ALL  sans  les  privileges
              suffisants  (CAP_SYS_NICE).  Ou  bien  l'appelant  a  essaye  de
              deplacer  des  pages  d'un  processus  appartenant  a  un  autre
              utilisateur mais n'etait pas autorise a le faire (CAP_SYS_NICE).

       ESRCH  Le processus n'existe pas.

VERSIONS

       move_pages() est apparu pour la premiere fois sous Linux avec le  noyau
       2.6.18.

CONFORMIT'E

       Cet appel systeme est specifique a Linux.

NOTES

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

       Utilisez get_mempolicy(2)  avec  le  drapeau  MPOL_F_MEMS_ALLOWED  pour
       obtenir  l'ensemble  des noeuds autorises par l'ensemble de processeurs
       courant. Notez que cette information peut changer a 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  noeud)  viole la politique memoire etablie pour les
       adresses  indiquees  (voir  mbind(2))  ou  pour  le  processus  indique
       (consultez  set_mempolicy(2)). En d'autres termes, la politique memoire
       ne restreint pas les noeuds de destination utilises par move_pages().

       L'en-tete <numaif.h> n'est pas inclus dans  la  glibc,  mais  necessite
       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), numa_stat(8)

COLOPHON

       Cette  page  fait  partie  de  la  publication 3.27 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies       peuvent       etre       trouvees      a      l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

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

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

       Veuillez   signaler   toute   erreur   de   traduction  en  ecrivant  a
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous  pouvez  toujours avoir acces a la version anglaise de ce document
       en utilisant la commande << man -L C <section> <page_de_man> >>.