Sous-routine pthread_setschedparam
Objectif
Définit les attributs schedpolicy et schedparam d'une unité d'exécution.
Bibliothèque
Bibliothèque d'unités d'exécution (libpthreads.a)
Syntaxe
#include <pthread.h>
#include <sys/sched.h>
int pthread_setschedparam (thread, schedpolicy, schedparam)
pthread_t thread;
int schedpolicy;
const struct sched_param *schedparam;Descriptif
La sous-routine pthread_setschedparam définit dynamiquement les attributs schedpolicy et schedparam de l'unité d'exécution thread. L'attribut schedpolicy spécifie la règle de planification de l'unité d'exécution. L'attribut schedparam spécifie les paramètres de planification d'une unité d'exécution créée avec cet objet d'attribut. La zone sched_priority de la structure sched_param contient la priorité de l'unité d'exécution. Il s'agit d'une valeur entière.
Si l'unité d'exécution cible a une portée de conflit système, le processus doit disposer des droits d'accès root pour définir la règle de planification sur SCHED_FIFO ou SCHED_RR.
-D_THREAD_SAFE doit être utilisé ou le compilateur cc_r doit être utilisé. Dans ce cas, l'indicateur est automatiquement défini.Cette sous-routine fait partie de l'environnement d'exécution du système d'exploitation de base (BOS). L'implémentation de cette sous-routine dépend de l'option POSIX de planification des priorités. L'option POSIX de planification des priorités est implémentée dans le système d'exploitation.
Paramètres
| Article | Descriptif |
|---|---|
| unité d"exécution | Indique l'unité d'exécution cible. |
| politique d'ordonnancement | Pointe vers l'attribut schedpolicy à définir. Elle doit avoir l'une des valeurs suivantes:
Remarque: la priorité des unités d'exécution avec une portée de conflit de processus et une règle SCHED_OTHER est contrôlée par le noyau ; par conséquent, la définition de la priorité d'une telle unité d'exécution n'a aucun effet. Toutefois, la priorité des unités d'exécution avec une portée de conflit système et une règle SCHED_OTHER peut être modifiée. La modification affecte directement la valeur
nice de l'unité d'exécution du noyau sous-jacente. |
| schedparam | Indique où sont stockés les paramètres de planification à définir. La zone sched_priority doit être comprise entre 1 et 127, où 1 est la priorité la moins favorisée et 127 la plus favorisée. Si schedpolicy est SCHED_OTHER, sched_priority doit être compris entre 40 et 80, où 40 est la priorité la moins favorisée et 80 la plus favorisée. Les utilisateurs peuvent modifier la priorité d'une unité d'exécution lors de la définition de sa stratégie de planification sur SCHED_OTHER. Les valeurs admises qui peuvent être transmises à pthread_setschedparam sont comprises entre 40 et 80. Seuls les utilisateurs privilégiés peuvent définir une priorité supérieure à 60. Une valeur comprise entre 1 et 39 donne la même priorité que 40, et une valeur comprise entre 81 et 127 donne la même priorité que 80. |
Valeurs renvoyées
Une fois l'opération terminée, la valeur 0 est renvoyée. Sinon, un code d'erreur est renvoyé.
Codes d'erreur
La sous-routine pthread_setschedparam échoue si la condition suivante est vraie:
| Article | Descriptif |
|---|---|
EINVAL |
Les paramètres thread ou schedparam ne sont pas valides. |
ENOSYS |
L'option POSIX de planification des priorités n'est pas implémentée. |
ENOTSUP |
La valeur des attributs schedpolicy ou schedparam n'est pas prise en charge. |
EPERM |
L'unité d'exécution cible ne dispose pas des droits suffisants pour effectuer l'opération ou est déjà engagée dans un protocole mutex. |
ESRCH |
L'unité d'exécution thread n'existe pas. |