Provided by:
manpages-fr-dev_3.27fr1.4-1_all 
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> >>.