sched_setscheduler()

Изменить приоритет и дисциплину планирования процесса

Прототип:

#include <sched.h>
int sched_setscheduler( pid_t pid,
int policy,
const struct sched_param *param );

Аргументы:

pid
Идентификатор процесса, для которого требуется установить приоритет и дисциплину планирования или 0, если подразумевается текущий процесс.
policy
Дисциплина планирования (возможные значения см. на странице описания SchedInfo()).
param
Указатель на структуру struct sched_param, поле sched_priority которой содержит приоритет, который требуется присвоить процессу.

Библиотека:

libc

Описание:

Функция sched_setscheduler() изменяет приоритет процесса pid на значение поля sched_priority структуры struct sched_param, переданном в параметре param, а дисциплина планирования принимает значение параметра policy.

Если pid равен нулю, устанавливаются дисциплина планирования и приоритет вызывающего процесса.

Значение поля sched_priority параметра param должно находиться между минимальным и максимальным значениями, возвращаемыми функциями sched_get_priority_max() и sched_get_priority_min().

По умолчанию приоритет процесса и дисциплина планирования наследуются или явно устанавливаются родительским процессом. После запуска дочерний процесс может изменить свой приоритет с помощью данной функции.

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

Предыдущая дисциплина планирования. Если возникла ошибка функция возвращает -1, код ошибки записывается в errno.

Коды ошибок:

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

Примеры:

См. sched_getparam().

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

POSIX 1003.1 Process Scheduling

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

Предостережения:

В многопоточной программе sched_setscheduler() устанавливает дисциплину планирования для потока 1 в процессе pid или для вызывающего потока, если pid равен 0.

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

struct sched_param, errno, getprio(), sched_getparam(), sched_get_priority_max(), sched_get_priority_min(), sched_getscheduler(), sched_setparam(), sched_yield(), setprio()




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