zion - sched_setaffinity
sched_setaffinity, sched_getaffinity - set and get a process's CPU affinity mask
Résumé
#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[b]);
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ées dans le masque . Le bit de moindre poid représente le numéro logique du premier processeur, tandis que le bit de poid le plus fort représent le numéro de dernier processeur. Un bit activé correspond à un processeur utilisable pour l'ordonnancement alors qu'un bit inhibé représent un processeur refuse. En d'autres terme, 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és 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.
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.
Poster un commentaire