man sched_setaffinity (Appels systèmes) - Définir et récupérer le masque d'affinité CPU d'un processus

NOM

sched_setaffinity, sched_getaffinity - Définir et récupérer le masque d'affinité CPU d'un processus

SYNOPSIS

#include <sched.h> int sched_setaffinity(pid_t pid, unsigned int lg, unsigned long *masque); int sched_getaffinity(pid_t pid, unsigned int lg, unsigned long *masque);

DESCRIPTION

sched_setaffinity fixe le masque des préférences du processus pid vis-à-vis du CPU. Si pid vaut zéro, il s'agit du processus appelant. Les préférences sont représentées par les bits stockés dans le masque. Le bit de moindre poids représente le numéro logique du premier processeur, tandis que le bit de poids le plus fort représente le numéro de dernier processeur. Un bit activé correspond à un processeur utilisable pour l'ordonnancement alors qu'un bit inhibé représente un processeur refusé. En d'autres termes, le processus est attaché et ne s'exécutera que sur les processeurs dont les bits sont activés. D'habitude, tous les bits du masque sont validés. L'argument lg représente la longueur des données pointées par le masque. Normalement, il s'agit de la taille d'un mot du système. Pour assurer la compatibilité avec les futurs noyaux Linux, comme cette taille peut varier, le masque fourni doit être au moins aussi grand que le masque d'affinité stocké dans le noyau. La fonction sched_getaffinity écrit dans la zone pointée par masque (dont la taille est lg) le masque de préférences du processus pid. Si pid vaut zéro, le masque du processus en cours est renvoyé.

VALEUR RENVOYÉE

S'ils réussissent sched_setaffinity et sched_getaffinity renvoient tous deux zéro. S'ils échouent, ils renvoient -1 et errno sera rempli avec le code d'erreur.

ERREURS

EFAULT
Une adresse mémoire est invalide.
ESRCH
Impossible de trouver le processus du pid indiqué.
EPERM
Le processus appelant n'a pas les privilèges appropriés. Le processus qui invoque sched_setaffinity doit avoir un UID effectif égal à l'UID effectif ou réel du processus identifié par pid, ou avoir la capacité CAP_SYS_NICE.
EINVAL
Le masque des préférences ne contient pas de processeurs présents sur le système, ou lg est plus petit que la taille du masque d'affinité utilisé par le noyau.

HISTORIQUE

Les appels-système d'affinité ont été introduit dans Linux 2.5.8. Les appels-bibliothèque ont été introduit dans glibc 2.3 et sont encore présents dans glibc 2.3.2. Les versions de développement postérieures à glibc 2.3.2 ont modifié cette interface en une sans le champ len, et les versions suivantes sont revenues en arrière. Le prototype glibc est à présent

/* Définir l'affinité CPU d'une tâche */
extern int sched_setaffinity (pid_t pid, size_t cpusetsize,
                              const cpu_set_t *cpuset);

/* Récupérer l'affinité CPU d'une tâche */
extern int sched_getaffinity (pid_t pid, size_t cpusetsize,
                              cpu_set_t *cpuset);

VOIR AUSSI

sched_setscheduler(2), sched_getscheduler(2), sched_get_priority_max(2), sched_get_priority_min(2), nice(2), setpriority(2), getpriority(2),

sched_setscheduler(2) décrit le fonctionnement de l'ordonnancement sous Linux.

TRADUCTION

Christophe Blaess, 1996-2003.

CETTE PAGE DOCUMENTE AUSSI :