sched_setscheduler(2) System Calls Manual sched_setscheduler(2) NOM sched_setscheduler, sched_getscheduler - Lire et definir la politique d'ordonnancement et ses parametres BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include int sched_setscheduler(pid_t pid, int policy, const struct sched_param *param); int sched_getscheduler(pid_t pid); DESCRIPTION L'appel systeme sched_setscheduler() affecte la politique d'ordonnancement et ses parametres associes pour le thread identifie par pid. Si pid vaut zero, la politique et les parametres seront affectes au thread appelant. Les parametres d'ordonnancement sont precises dans l'argument param qui est un pointeur vers une structure qui presente la forme suivante : struct sched_param { ... int sched_priority; ... }; Dans son implementation actuelle, la structure ne contient qu'un seul champ, sched_priority. L'interpretation du champ param depend de la politique choisie. Actuellement, Linux accepte les politiques d'ordonnancement suivantes considerees << normales >> (c'est a dire non << temps reel >>) comme valeurs pouvant etre passees dans policy : SCHED_OTHER politique standard de temps partage << round-robin >> ; SCHED_BATCH pour une execution de style traitement par lot des processus ; et SCHED_IDLE pour l'execution de taches de tres faible priorite en arriere-plan. Pour chacune des politiques suivantes, param->sched_priority doit valoir 0. Les politiques << temps reel >> suivantes sont egalement gerees, pour des applications particulieres sensibles au temps et qui necessitent un controle precis de la facon dont sont choisis les threads qui doivent etre executes. Pour en savoir plus sur les regles s'appliquant lorsqu'un processus doit utiliser ces politiques, consultez sched(7). Les politiques << temps reel >> qui sont acceptees dans policy sont : SCHED_FIFO une politique de << premier entre, premier sorti >> ; et SCHED_RR une politique << round-robin >>. Pour chacune des politiques decrites precedemment, param->sched_priority indique une priorite d'ordonnancement pour le thread. Il s'agit d'un nombre compris dans un intervalle borne par les valeurs renvoyees par des appels a sched_get_priority_min(2) et a sched_get_priority_max(2) en indiquant dans policy la politique choisie. Sous Linux, ces appels systemes renvoient respectivement 1 et 99. Depuis Linux 2.6.32, l'attribut SCHED_RESET_ON_FORK peut etre inclus a l'aide d'un OU binaire dans policy dans l'appel a sched_setscheduler(). Lorsque cet attribut est utilise, les enfants crees par fork(2) n'heritent pas de politiques d'ordonnancement privilegiees. Pour plus details, vous pouvez vous reporter a sched(7). sched_getscheduler() renvoie la politique d'ordonnancement en cours d'utilisation pour le thread identifie par pid. Si pid vaut zero, la politique du thread appelant sera renvoyee. VALEUR RENVOYEE sched_setscheduler() renvoie 0 s'il reussit. sched_getscheduler() renvoie la politique pour le thread s'il reussit (un entier non negatif). En cas d'echec, les deux appels renvoient -1 et errno est positionne pour indiquer l'erreur. ERREURS EINVAL Arguments invalides : pid est negatif ou param vaut NULL. EINVAL (sched_setscheduler()) policy ne fait pas partie des politiques acceptees. EINVAL (sched_setscheduler()) Le parametre param n'a pas de sens pour la politique d'ordonnancement (policy) utilisee. EPERM Le thread appelant ne possede pas les privileges necessaires. ESRCH Le thread numero pid n'existe pas. VERSIONS POSIX.1 ne detaille pas quelles permissions sont necessaires pour qu'un thread non privilegie puisse appeler sched_setscheduler() et les details dependent des systemes. Par exemple, la page de manuel de Solaris 7 dit que l'UID reel ou effectif du thread appelant doit correspondre a l'UID reel ou le set-user-ID enregistre de la cible. Sous Linux, la politique et les parametres d'ordonnancement sont en fait des attributs par threads. La valeur renvoyee par un appel a gettid(2) peut etre passee dans l'argument pid. Lorsque la valeur de pid indiquee est 0, les attributs seront definis pour le thread appelant ; lorsque cette valeur est celle renvoyee par getpid(2), les attributs modifies seront ceux du thread principal du groupe de threads (si vous utilisez l'API de manipulation des threads POSIX, alors utilisez pthread_setschedparam(3), pthread_getschedparam(3) et pthread_setschedprio(3) plutot que les appels systeme sched_*(2)). STANDARDS POSIX.1-2008 (mais voir BOGUES plus loin) SCHED_BATCH et SCHED_IDLE sont specifiques a Linux. HISTORIQUE POSIX.1-2001. NOTES La page de manuel de sched(7) contient davantage d'informations sur les politiques d'ordonnancement << normales >> et << temps reel >> presentees precedemment. Cette page decrit aussi une politique supplementaire, SCHED_DEADLINE, parametrable uniquement a l'aide de sched_setattr(2). Les systemes POSIX sur lesquels sched_setscheduler() et sched_getscheduler() sont disponibles definissent _POSIX_PRIORITY_SCHEDULING dans . BOGUES POSIX.1 dit qu'en cas de reussite, sched_setscheduler() devrait renvoyer la politique d'ordonnancement precedente. La version Linux de sched_setscheduler() ne se conforme pas a cette demande puisqu'elle renvoie toujours 0 en cas de reussite. VOIR AUSSI chrt(1), nice(2), sched_get_priority_max(2), sched_get_priority_min(2), sched_getaffinity(2), sched_getattr(2), sched_getparam(2), sched_rr_get_interval(2), sched_setaffinity(2), sched_setattr(2), sched_setparam(2), sched_yield(2), setpriority(2), capabilities(7), cpuset(7), sched(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 , Cedric Boutillier , Frederic Hantrais 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 sched_setscheduler(2)