getcpu(2) System Calls Manual getcpu(2) NOM getcpu - Determiner le processeur et le noeud NUMA sur lesquels le thread appelant est en cours d'execution BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #define _GNU_SOURCE /* Consultez feature_test_macros(7) */ #include int getcpu(unsigned int *_Nullable cpu, unsigned int *_Nullable node); DESCRIPTION L'appel systeme getcpu() identifie le processeur et le noeud sur lesquels le thread ou processus appelant est en cours d'execution et ecrit le resultat dans les entiers pointes par les arguments cpu et node. Le processeur est un petit entier unique identifiant une CPU. Le noeud est un petit entier unique identifiant un noeud NUMA. Si cpu ou node est NULL, rien n'est ecrit dans leur pointeur respectif. L'information placee dans cpu n'est garantie d'etre exacte qu'au moment de l'appel : a moins que l'affinite CPU n'ait ete definie avec sched_setaffinity(2), le noyau peut changer de processeur a 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 etre pret a gerer la situation ou les informations renvoyees dans cpu et node ne sont plus valables au retour de l'appel. VALEUR RENVOYEE S'il reussit, la valeur zero est renvoyee. En cas d'erreur, il renvoie -1 et errno est positionne pour indiquer l'erreur. ERREURS EFAULT Les arguments pointent en dehors de l'espace d'adressage du processus appelant. STANDARDS Linux. HISTORIQUE Linux 2.6.19 (x86-64 et i386), glibc 2.29. Differences entre bibliotheque C et noyau L'appel systeme du noyau a un troisieme argument : int getcpu(unsigned int *cpu, unsigned int *node,0 struct getcpu_cache *tcache); L'argument tcache est inutilise depuis Linux 2.6.24 et (lorsqu'il est appele directement avec l'appel systeme) devrait etre indique comme valant NULL sauf si la portabilite vers Linux 2.6.23 ou anterieur est necessaire. Dans Linux 2.6.23 et anterieur, si le parametre tcache n'etait pas NULL, il specifiait un pointeur vers un tampon de l'appelant dans l'espace local de stockage du thread utilise pour fournir un mecanisme de cache a getcpu(). L'utilisation de ce cache pouvait accelerer les appels a getcpu(), avec le faible risque que l'information renvoyee ne soit plus a jour. On a considere que le mecanisme de cache entrainait des problemes lors de la migration de threads entre processeurs, aussi, cet argument est aujourd'hui ignore. NOTES Linux fait de gros efforts pour rendre cet appel aussi rapide que possible (sur certaines architectures, il passe par une implementation dans la vdso(7)). Le but de getcpu() est de permettre aux programmes de realiser des optimisations de donnees propres a chaque processeur et pour l'optimisation NUMA. VOIR AUSSI mbind(2), sched_setaffinity(2), set_mempolicy(2), sched_getcpu(3), cpuset(7), vdso(7) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Jean-Philippe MENGUAL Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 getcpu(2)