sched_setscheduler(2) System Calls Manual sched_setscheduler(2) NUME sched_setscheduler, sched_getscheduler - stabilete i obine politica/parametrii de planificare BIBLIOTECA Biblioteca C standard (libc, -lc) SINOPSIS #include int sched_setscheduler(pid_t pid, int policy, const struct sched_param *param); int sched_getscheduler(pid_t pid); DESCRIERE Apelul de sistem sched_setscheduler() stabilete atat politica de planificare, cat i parametrii pentru firul al carui ID este specificat in pid. Daca pid este egal cu zero, se vor stabili politica de planificare i parametrii firului apelant. Parametrii de planificare sunt specificai in argumentul param, care este un indicator catre o structura de forma urmatoare: struct sched_param { ... int sched_priority; ... }; In implementarea actuala, structura conine un singur camp, sched_priority. Interpretarea lui param depinde de politica selectata. In prezent, Linux accepta urmatoarele politici de planificare ,,normale" (adica, fara timp real) ca valori care pot fi specificate in policy: SCHED_OTHER politica standard de repartizare a timpului ,,round-robin"; SCHED_BATCH pentru executarea proceselor in stil ,,lot"; i SCHED_IDLE pentru rularea sarcinilor de fundal cu prioritate foarte mica. Pentru fiecare dintre politicile de mai sus, param->sched_priority trebuie sa fie 0. Sunt acceptate, de asemenea, diferite politici ,,in timp real", pentru aplicaii speciale cu timp critic care necesita un control precis asupra modului in care sunt selectate pentru execuie firele de execuie. Pentru normele care reglementeaza situaiile in care un proces poate utiliza aceste politici, a se vedea sched(7). Politicile in timp real care pot fi specificate in policy sunt: SCHED_FIFO o politica ,,primul intrat, primul ieit"; i SCHED_RR o politica ,,round-robin". Pentru fiecare dintre politicile de mai sus, param->sched_priority specifica o prioritate de planificare pentru fir. Acesta este un numar din intervalul returnat prin apelarea sched_get_priority_min(2) i sched_get_priority_max(2) cu policy specificat. In Linux, aceste apeluri de sistem returneaza, respectiv, 1 i 99. Incepand cu Linux 2.6.32, flagul SCHED_RESET_ON_FORK poate fi SAU condiional(ORed) in policy atunci cand se apeleaza sched_setscheduler(). Ca urmare a includerii acestui indicator, copiii creai de fork(2) nu motenesc politici de planificare privilegiate. Consultai sched(7) pentru detalii. sched_getscheduler() returneaza politica curenta de planificare a firului identificat prin pid. Daca pid este egal cu zero, se va prelua politica firului apelant. VALOAREA RETURNATA In caz de succes, sched_setscheduler() returneaza zero. La succes, sched_getscheduler() returneaza politica pentru firul de execuie (un numar intreg nenulegativ). In caz de eroare, ambele apeluri returneaza -1, iar errno este configurata pentru a indica eroarea. ERORI-IEIRE EINVAL Argumente nevalide: pid este negativ sau param este NULL. EINVAL (sched_setscheduler()) Politica definita de policy nu este una dintre politicile recunoscute. EINVAL (sched_setscheduler()) Parametrul param nu are sens pentru policy specificata. EPERM Firul apelant nu are privilegiile adecvate. ESRCH Firul de execuie al carui identificator este pid nu a putut fi gasit. VERSIUNI POSIX.1 nu detaliaza permisiunile de care are nevoie un fir neprivilegiat pentru a apela sched_setscheduler(), iar detaliile variaza de la un sistem la altul. De exemplu, pagina de manual Solaris 7 precizeaza ca ID-ul de utilizator real sau efectiv al apelantului trebuie sa coincida cu ID-ul de utilizator real sau cu set-user-ID-ul de salvare al intei. Politica de planificare i parametrii sunt de fapt atribute per-fir de execuie in Linux. Valoarea returnata in urma unui apel la gettid(2) poate fi trecuta in argumentul pid. Specificarea pid ca 0 va opera asupra atributelor firului apelant, iar trecerea valorii returnate in urma unui apel la getpid(2) va opera asupra atributelor firului principal al grupului de fire; (daca utilizai API-ul de fire POSIX, atunci utilizai pthread_setschedparam(3), pthread_getschedparam(3) i pthread_setschedprio(3), in locul apelurilor de sistem sched_*(2)). STANDARDE POSIX.1-2008 (dar vedei seciunea ERORI de mai jos). SCHED_BATCH i SCHED_IDLE sunt specifice Linux. ISTORIC POSIX.1-2001. NOTE Detalii suplimentare privind semantica tuturor politicilor de planificare ,,normala" i ,,in timp real" de mai sus pot fi gasite in pagina de manual sched(7). Pagina respectiva descrie, de asemenea, o politica suplimentara, SCHED_DEADLINE, care poate fi definita numai prin intermediul sched_setattr(2). Sistemele POSIX pe care sunt disponibile sched_setscheduler() i sched_getscheduler() definesc _POSIX_PRIORITY_SCHEDULING in . ERORI POSIX.1 spune ca, in caz de succes, sched_setscheduler() ar trebui sa returneze politica de planificare anterioara. Linux sched_setscheduler() nu este conform cu aceasta cerina, deoarece returneaza intotdeauna 0 in caz de succes. CONSULTAI I 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) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.12 23 iulie 2024 sched_setscheduler(2)