.\" -*- coding: UTF-8 -*-
.\" Copyright (C) 2014 Michael Kerrisk <mtk.manpages@gmail.com>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH sched_setscheduler 2 "2 maja 2024 r." "Linux man\-pages 6.9.1" 
.SH NAZWA
sched_setscheduler, sched_getscheduler \- ustawia i pobiera
algorytm/parametry szeregowania zadań
.SH BIBLIOTEKA
Standardowa biblioteka C (\fIlibc\fP, \fI\-lc\fP)
.SH SKŁADNIA
.nf
\fB#include <sched.h>\fP
.P
\fBint sched_setscheduler(pid_t \fP\fIpid\fP\fB, int \fP\fIpolicy\fP\fB,\fP
\fB                       const struct sched_param *\fP\fIparam\fP\fB);\fP
\fBint sched_getscheduler(pid_t \fP\fIpid\fP\fB);\fP
.fi
.SH OPIS
Wywołanie systemowe \fBsched_getscheduler\fP ustawia zarówno politykę jak i
parametry szeregowania zadań wątku, którego identyfikator podano w
\fIpid\fP. Jeśli \fIpid\fP jest równe zeru, to ustawiana jest polityka i parametry
szeregowania zadań wątku wywołującego.
.P
Parametry szeregowania zadań są określane w argumencie \fIparam\fP, który jest
wskaźnikiem do struktury w następującej postaci:
.P
.in +4n
.EX
struct sched_param {
    ...
    int sched_priority;
    ...
};
.EE
.in
.P
W bieżącej implementacji, struktura zawiera tylko jedno pole:
\fIsched_priority\fP. Interpretacja \fIparam\fP zależy od wybranej polityki.
.P
Obecnie, Linux obsługuje następujące \[Bq]zwykłe\[rq] (tj. nie czasu
rzeczywistego) polityki przydzielania zadań, które można podać jako wartości
\fIpolicy\fP:
.TP  14
\fBSCHED_OTHER\fP
.\" In the 2.6 kernel sources, SCHED_OTHER is actually called
.\" SCHED_NORMAL.
standardowa polityka dzielenia czasu za pomocą planowania rotacyjnego
.TP 
\fBSCHED_BATCH\fP
do wykonywania procesów w stylu \[Bq]wsadowym\[rq] oraz
.TP 
\fBSCHED_IDLE\fP
do uruchamiania zadań tła, o \fIbardzo\fP niskim priorytecie.
.P
Dla każdej z powyższych polityk, \fIparam\->sched_priority\fP musi wynosić
0.
.P
Obsługiwane są również różne polityki \[Bq]czasu rzeczywistego\[rq],
nadające się do specjalnych aplikacji, gdzie krytyczna jest precyzyjna
kontrola nad sposobem, w jaki działające wątki są wybierane do
wykonania. Aby dowiedzieć się więcej o zasadach regulujących okoliczności, w
jakich wątki procesu mogą używać tych polityk, należy zapoznać się z
podręcznikiem \fBsched\fP(7). Polityki czasu rzeczywistego, jakie można
określić w \fIpolicy\fP to:
.TP  14
\fBSCHED_FIFO\fP
polityka: pierwszy na wejściu, pierwszy na wyjściu oraz
.TP 
\fBSCHED_RR\fP
polityka planowania rotacyjnego.
.P
Dla każdej z powyższych polityk, \fIparam\->sched_priority\fP określa
priorytet szeregowania zadań dla wątku. Jest to liczba w zakresie zwracanym
przez wywołanie \fBsched_get_priority_min\fP(2) i \fBsched_get_priority_max\fP(2)
z podaną \fIpolicy\fP. W Linuksie te wywołania systemowe zwracają, odpowiednio:
1 i 99.
.P
Od Linuksa 2.6.32, znacznik \fBSCHED_RESET_ON_FORK\fP może być zsumowany
logicznie (OR) w \fIpolicy\fP, przy wywoływaniu \fBsched_setscheduler\fP(). Dzięki
podaniu tego znacznika, potomkowie utworzeni przez \fBfork\fP(2) nie dziedziczą
uprzywilejowanych polityk szeregowania zadań. Więcej informacji w
podręczniku \fBsched\fP(7).
.P
\fBsched_getscheduler\fP() zwraca bieżącą politykę szeregowania zadań, która
dotyczy wątku określonego przez \fIpid\fP. Jeśli \fIpid\fP jest równe zeru, to
pobierana jest polityka dotycząca wątku wywołującego.
.SH "WARTOŚĆ ZWRACANA"
Po pomyślnym zakończeniu, \fBsched_setscheduler\fP() zwraca zero. Po pomyślnym
zakończeniu, \fBsched_getscheduler\fP zwraca politykę dla wątku (nieujemna
liczba całkowita). Po błędzie, oba wywołania zwracają \-1 i ustawiają
\fIerrno\fP wskazując błąd.
.SH BŁĘDY
.TP 
\fBEINVAL\fP
Nieprawidłowe argumenty: \fIpid\fP jest ujemne lub \fIparam\fP wynosi NULL.
.TP 
\fBEINVAL\fP
(\fBsched_setscheduler\fP())  \fIpolicy\fP nie jest jedną ze znanych polityk.
.TP 
\fBEINVAL\fP
(\fBsched_setscheduler\fP())  \fIparam\fP nie ma sensu w podanej \fIpolicy\fP.
.TP 
\fBEPERM\fP
Wątek wywołujący nie ma odpowiednich przywilejów.
.TP 
\fBESRCH\fP
Nie znaleziono wątku o identyfikatorze równym \fIpid\fP.
.SH WERSJE
POSIX.1 nie określa szczegółowo, jakich uprawnień wymaga wątek
nieuprzywilejowany, do wywołania \fBsched_setscheduler\fP(), a detale te różnią
się między systemami. Przykładowo, strona podręcznika systemu Solaris 7
informuje, że rzeczywisty lub efektywny identyfikator użytkownika
wywołującego musi odpowiadać rzeczywistemu identyfikatorowi użytkownika lub
zapisanemu set\-user\-ID celu.
.P
Polityka i parametry szeregowania zadań są w Linuksie w rzeczywistości
atrybutami przypisanymi wątkowi. Wartość zwracaną przez wywołanie
\fBgettid\fP(2) można przekazać w argumencie \fIpid\fP. Podanie \fIpid\fP równego 0
będzie oznaczało działanie na atrybutach wątku wywołującego, a przekazanie
wartości zwróconej przez wywołanie \fBgetpid\fP(2), będzie oznaczało działanie
na atrybutach głównego wątku w grupie wątku (jeśli korzysta się z interfejsu
programistycznego wątków POSIX, należy korzystać z
\fBpthread_setschedparam\fP(3), \fBpthread_getschedparam\fP(3) i
\fBpthread_setschedprio\fP(3), zamiast z wywołań systemowych \fBsched_*\fP(2)).
.SH STANDARDY
POSIX.1\-2008 (lecz zob. USTERKI poniżej).
.P
\fBSCHED_BATCH\fP() i \fBSCHED_IDLE\fP() są typowo linuksowe.
.SH HISTORIA
POSIX.1\-2001.
.SH UWAGI
Dalsze szczegóły odnośnie semantyki wszystkich powyższych polityk
szeregowania zadań \[Bq]zwykłych\[rq] i \[Bq]czasu rzeczywistego\[rq]
opisano w podręczniku systemowym \fBsched\fP(7). Zawarto tam także opis
dodatkowej polityki, \fBSCHED_DEADLINE\fP, którą można ustawić jedynie za
pomocą \fBsched_setattr\fP(2).
.P
Systemy POSIX\-owe, na których dostępne są \fBsched_setscheduler\fP() i
\fBsched_getscheduler\fP(), definiują w \fI<unistd.h>\fP
\fB_POSIX_PRIORITY_SCHEDULING\fP.
.SH USTERKI
POSIX.1 wskazuje, że przy powodzeniu, \fBsched_setscheduler\fP() powinno
zwrócić poprzednią politykę szeregowania zadań. \fBsched_setscheduler\fP() w
Linuksie nie jest zgodne z tym wymaganiem, ponieważ w przypadku powodzenia
zawsze zwraca 0.
.SH "ZOBACZ TAKŻE"
.ad l
.nh
\fBchrt\fP(1), \fBnice\fP(2), \fBsched_get_priority_max\fP(2),
\fBsched_get_priority_min\fP(2), \fBsched_getaffinity\fP(2), \fBsched_getattr\fP(2),
\fBsched_getparam\fP(2), \fBsched_rr_get_interval\fP(2), \fBsched_setaffinity\fP(2),
\fBsched_setattr\fP(2), \fBsched_setparam\fP(2), \fBsched_yield\fP(2),
\fBsetpriority\fP(2), \fBcapabilities\fP(7), \fBcpuset\fP(7), \fBsched\fP(7)
.ad
.PP
.SH TŁUMACZENIE
Tłumaczenie niniejszej strony podręcznika:
Przemek Borys <pborys@dione.ids.pl>,
Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl>
i
Michał Kułach <michal.kulach@gmail.com>
.
.PP
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach
licencji można uzyskać zapoznając się z
.UR https://www.gnu.org/licenses/gpl-3.0.html
GNU General Public License w wersji 3
.UE
lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
.PP
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy
dyskusyjnej
.MT manpages-pl-list@lists.sourceforge.net
.ME .
