SchedSet(), SchedSet_r()

Установить параметры планирования и дисциплину потока

Прототип:

#include <sys/neutrino.h>
int SchedSet( pid_t pid,
int tid,
int policy,
const struct sched_param *param );
int SchedSet_r( pid_t pid,
int tid,
int policy,
const struct sched_param *param );

Аргументы:

pid
0 or a process ID.
tid
0 or a thread ID.
policy
The scheduling policy; one of:
SCHED_FIFO
a fixed-priority scheduler in which the highest priority, ready thread runs until it blocks or is preempted by a higher priority thread.
SCHED_RR
the same as SCHED_FIFO, except threads at the same priority level timeslice (round robin) every 4 × the clock period (see ClockPeriod()).
SCHED_OTHER
currently the same as SCHED_RR.
SCHED_SPORADIC
sporadic scheduling.
SCHED_NOCHANGE
this isn't actually a policy, but a special value that tells the kernel to update the parameters specified in param, without changing the policy.
SCHED_ADJTOHEAD
puts pid and tid at the head of the READY queue if they are in a READY state.
SCHED_ADJTOTAIL
puts pid and tid at the tail of the READY queue if they are in a READY state.

Note: If either the SCHED_ADJTOHEAD or SCHED_ADJTOTAIL options is set, then the struct sched_param field is ignored.

param
A pointer to a struct sched_param where the function can store the scheduling parameters.

Библиотека:

libc

Описание:

The SchedSet() and SchedSet_r() kernel calls set both the scheduling policy and the associated parameters for the thread specified by tid in the process specified by pid. If pid is zero the current process is used to look up a nonzero tid. If tid is zero, then the calling thread is used and pid is ignored.

Данные функции идентичны за исключением способа возврата ошибок.


Note: Instead of using these kernel calls directly, consider calling pthread_setschedparam() or pthread_setschedprio().

Состояния блокировки:

These calls don't block.

Возвращаемое значение:

SchedSet()
Если возникла ошибка функция возвращает -1, код ошибки записывается в errno. Любое другое возвращенное значение считается успешным завершением.
SchedSet_r()
EOK возвращается при успешном завершении. Функция НЕ устанавливает errno. При возникновении ошибки функция возвращает один из представленных ниже кодов.

Коды ошибок:

EFAULT
A fault occurred when the kernel tried to access the buffers you provided.
EINVAL
The given scheduling policy is invalid.
EPERM
The process doesn't have permission to change the scheduling of the indicated thread.
ESRCH
The process indicated by pid or thread indicated by tid doesn't exist.

Классификация:

ЗОСРВ «Нейтрино»

Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

struct sched_param, pthread_setschedparam(), pthread_setschedprio(), sched_get_priority_max(), sched_get_priority_min(), SchedGet(), SchedInfo(), SchedYield()




Предыдущий раздел: Описание API системной библиотеки