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 или идентификатор процесса.
tid
0 или идентификатор потока.
policy
Дисциплина планирования, которая должна быть одной из следующих:
SCHED_FIFO
SCHED_RR
SCHED_OTHER
SCHED_SPORADIC
Описание этих дисциплин представлено на странице описания SchedInfo()
SCHED_NOCHANGE
Не является дисциплиной планирования. Специальное значение, которое используемое для обновления ядром параметров, указанных в param, без изменения дисциплины планирования.
SCHED_ADJTOHEAD
помещает pid и tid в начало очереди READY, если поток находится в состоянии READY.
SCHED_ADJTOTAIL
помещает pid и tid в конец очереди READY, если поток находится в состоянии READY.

Note: Если установлены параметры SCHED_ADJTOHEAD или SCHED_ADJTOTAIL, то поле struct sched_param игнорируется.

param
Указатель на struct sched_param, где функция хранит параметры планирования.

Библиотека:

libc

Описание:

Вызовы ядра SchedSet() и SchedSet_r() устанавливают как дисциплину планирования, так и параметры планирования для потока tid, в процессе pid. Если pid равен нулю, подразумевается текущий процесс и ненулевой tid. Если tid равен нулю, то подразумевается вызывающий поток, а параметр pid игнорируется.

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


Note: Рекомендуется использовать функцию pthread_setschedparam() или pthread_setschedprio() вместо прямых вызовов ядра.

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

Данные вызовы являются неблокируемыми.

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

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

Коды ошибок:

EFAULT
Произошла ошибка при попытке ядра получить доступ к предоставленным буферам.
EINVAL
Дисциплина планирования policy недействительна.
EPERM
Недостаточно прав для изменения параметров планирования или дисциплины потока.
ESRCH
Процесс pid или поток tid не существуют.

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

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

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

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

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




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