Man page - pthread_getaffinity_np(3)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

pthread_setaffinity_np

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
ATTRIBUTS
STANDARDS
HISTORIQUE
NOTES
EXEMPLES
VOIR AUSSI
TRADUCTION

NOM

pthread_setaffinity_np, pthread_getaffinity_np - DĂ©finir et obtenir l’affinitĂ© CPU d’un thread

BIBLIOTHÈQUE

BibliothĂšque de threads POSIX ( libpthread , -lpthread )

SYNOPSIS

#define _GNU_SOURCE /* Consultez feature_test_macros(7) */
#include <pthread.h>

int pthread_setaffinity_np(pthread_t thread , size_t cpusetsize ,
const cpu_set_t *
cpuset );
int pthread_getaffinity_np(pthread_t
thread , size_t cpusetsize ,
cpu_set_t *
cpuset );

DESCRIPTION

La fonction pthread_setaffinity_np () dĂ©finit le masque d’affinitĂ© CPU du thread thread comme Ă©tant l’ensemble de CPU pointĂ© par cpuset . Si l’appel rĂ©ussit et que le thread n’est pas en cours d’exĂ©cution sur un des CPU de cpuset , alors il est dĂ©placĂ© sur un de ces CPU.

La fonction pthread_getaffinity_np () renvoie, dans le tampon pointĂ© par cpuset , le masque d’affinitĂ© CPU du thread thread .

Pour plus de dĂ©tails sur les masques d’affinitĂ© CPU, consultez sched_setaffinity (2). Pour une description d’un jeu de macros qui peuvent ĂȘtre utilisĂ©es pour manipuler et inspecter des ensembles de CPU, consultez CPU_SET (3).

Le paramĂštre cpusetsize est la longueur (en octets) du tampon pointĂ© par cpuset . Typiquement, ce paramĂštre sera sizeof (cpu_set_t) (il peut prendre d’autres valeurs, si on utilise les macros dĂ©crites dans CPU_SET (3) pour allouer dynamiquement un ensemble de CPU).

VALEUR RENVOYÉE

En cas de succùs, ces fonctions renvoient 0 ; en cas d’erreur, elles renvoient un code d’erreur non nul.

ERREURS

EFAULT

Une adresse mĂ©moire fournie n’est pas correcte.

EINVAL

( pthread_setaffinity_np ()) Le masque de bits d’affinitĂ© mask ne contient pas de processeurs qui soit actuellement physiquement sur le systĂšme et autorisĂ© pour le thread d’aprĂšs les restrictions imposĂ©es par le mĂ©canisme d’ensembles de CPU dĂ©crit dans cpuset (7).

EINVAL

( pthread_setaffinity_np ()) Le cpuset indique un CPU en dehors de l’ensemble pris en charge par le noyau (l’option de configuration du noyau CONFIG_NR_CPUS dĂ©finie l’intervalle de l’ensemble pris en charge par le type de donnĂ©es du noyau utilisĂ© pour reprĂ©senter les ensembles de CPU).

EINVAL

( pthread_getaffinity_np ()) cpusetsize est plus petit que le taille du masque d’affinitĂ© utilisĂ© par le noyau.

ESRCH

Aucun fil d’exĂ©cution avec pour identifiant thread n’a pu ĂȘtre trouvĂ©.

ATTRIBUTS

Pour une explication des termes utilisés dans cette section, consulter attributes (7).

Image grohtml-3897501-1.png

STANDARDS

GNU ; d’oĂč le suffixe « _np » (non portable) dans leur nom.

HISTORIQUE

glibc 2.3.4.

Dans la glibc 2.3.3, uniquement, les versions de ces fonctions n’avaient pas de paramĂštre cpusetsize . À la place, la taille de l’ensemble de CPU fourni Ă  l’appel systĂšme sous-jacent Ă©tait toujours sizeof(cpu_set_t) .

NOTES

AprĂšs un appel Ă  pthread_setaffinity_np (), l’ensemble de CPU sur lesquels le processus s’exĂ©cutera est l’intersection de l’ensemble spĂ©cifiĂ© dans le paramĂštre cpuset et l’ensemble des CPU actuellement prĂ©sents sur le systĂšme. Le systĂšme peut restreindre encore plus l’ensemble des CPU sur lesquels le processus peut tourner si le mĂ©canisme « cpuset », dĂ©crit dans cpuset (7), est utilisĂ©. Ces restrictions sur le vĂ©ritable ensemble de CPU sur lesquels le processus peut tourner sont imposĂ©es sans avertissement par le noyau.

Ces fonctions sont implémentées en utilisant les appels systÚme sched_setaffinity (2) et sched_getaffinity (2).

Un nouveau thread créé avec pthread_create (3) hĂ©rite d’une copie du masque d’affinitĂ© CPU de son crĂ©ateur.

EXEMPLES

Dans le programme suivant, le thread principal utilise pthread_setaffinity_np () pour dĂ©finir son masque d’affinitĂ© CPU incluant les CPU 0 Ă  7 (qui peuvent ne pas ĂȘtre tous prĂ©sents sur le systĂšme), puis appelle pthread_getaffinity_np () pour vĂ©rifier le masque d’affinitĂ© CPU finalement utilisĂ© pour le thread.

#define _GNU_SOURCE
#include <err.h>
#include <errno.h>
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
int
main(void)
{
int s;
cpu_set_t cpuset;
pthread_t thread;
thread = pthread_self();
/* Set affinity mask to include CPUs 0 to 7. */
CPU_ZERO(&cpuset);
for (size_t j = 0; j < 8; j++)
CPU_SET(j, &cpuset);
s = pthread_setaffinity_np(thread, sizeof(cpuset), &cpuset);
if (s != 0)
errc(EXIT_FAILURE, s, "pthread_setaffinity_np");
/* Check the actual affinity mask assigned to the thread. */
s = pthread_getaffinity_np(thread, sizeof(cpuset), &cpuset);
if (s != 0)
errc(EXIT_FAILURE, s, "pthread_getaffinity_np");
printf("Set returned by pthread_getaffinity_np() contained:\n");
for (size_t j = 0; j < CPU_SETSIZE; j++)
if (CPU_ISSET(j, &cpuset))
printf(" CPU %zu\n", j);
exit(EXIT_SUCCESS);
}

VOIR AUSSI

sched_setaffinity (2), CPU_SET (3), pthread_attr_setaffinity_np (3), pthread_self (3), sched_getcpu (3), cpuset (7), pthreads (7), sched (7)

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org>, Frédéric Hantrais <fhantrais@gmail.com> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .