NOM¶
getcpu - Déterminer le processeur et le nœud NUMA sur lesquels le
thread appelant est en cours d'exécution
SYNOPSIS¶
#include <linux/getcpu.h>
int getcpu(unsigned *cpu, unsigned *node, struct getcpu_cache *tcache);
Remarque : il n'existe pas de fonction glibc autour de cet appel
système ; consultez
NOTES.
DESCRIPTION¶
L'appel système
getcpu() identifie le processeur et le nœud
sur lesquels le thread ou processus appelant est en cours d'exécution
et écrit le résultat dans les entiers pointés par les
arguments
cpu et
node. Le processeur est un petit entier unique
identifiant une CPU. Le nœud est un petit entier unique identifiant un
nœud NUMA. Si
cpu ou
node est NULL, rien n'est
écrit dans leur pointeur respectif.
Le troisième argument de cet appel système est aujourd'hui
inutilisé, et devrait être indiqué comme valant NULL sauf
si la portabilité vers Linux 2.6.23 ou antérieur est
nécessaire (consultez les NOTES).
L'information placée dans
cpu n'est garantie d'être exacte
qu'au moment de l'appel : à moins que l'affinité CPU
n'ait été définie avec
sched_setaffinity(2), le
noyau peut changer de processeur à tout moment. (Normalement, cela
n'arrive pas car l'ordonnanceur essaie de minimiser les mouvements entre CPU
et cache, mais c'est possible.) L'appelant doit être prêt
à gérer la situation où les informations renvoyées
dans
cpu et
node ne sont plus valables au retour de l'appel.
VALEUR RENVOYÉE¶
S'il réussit, la valeur zéro est renvoyée. En cas d'erreur,
il renvoie -1 et remplit
errno avec la valeur d'erreur.
ERREURS¶
- EFAULT
- Les arguments pointent en dehors de l'espace d'adressage du processus
appelant.
VERSIONS¶
getcpu() a été ajouté au noyau dans sa
version 2.6.19 pour les architectures x86_64 et i386.
getcpu() est spécifique à Linux.
NOTES¶
Linux fait de gros efforts pour rendre cet appel aussi rapide que possible. Le
but de
getcpu() est de permettre aux programmes de réaliser des
optimisations de données propres à chaque processeur et pour
l'optimisation NUMA.
La glibc ne fournit pas de fonction autour de cet appel système ;
utilisez
syscall(2) pour l'appeler ; ou utilisez
sched_getcpu(3) à la place.
Le paramètre
tcache n'est pas utilisé depuis la
version 2.6.24 de Linux. Dans les noyaux antérieurs, si cet
argument n'était pas NULL, il spécifiait un pointeur vers un
tampon de l'appelant dans l'espace local de stockage du thread utilisé
pour fournir un mécanisme de cache à
getcpu().
L'utilisation de ce cache pouvait accélérer les appels à
getcpu(), avec le faible risque que l'information renvoyée ne
soit plus à jour. On a considéré que le mécanisme
de cache entraînait des problèmes lors de la migration de
threads entre processeurs, aussi, cet argument est aujourd'hui ignoré.
VOIR AUSSI¶
mbind(2),
sched_setaffinity(2),
set_mempolicy(2),
sched_getcpu(3),
cpuset(7)
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> ».