sched_setscheduler()

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

Прототип:

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

Аргументы:

pid
The ID of the process whose priority and scheduling policy you want to set, or zero if you want to set them for the current process.
policy
The scheduling policy, which must be 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
similar to SCHED_FIFO, except that 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.
param
A pointer to a struct sched_param whose sched_priority member holds the priority that you want to assign to the process.

Библиотека:

libc

Описание:

The sched_setscheduler() function changes the priority of process pid to that of the sched_priority member in the struct sched_param passed as param, and the scheduling policy is set to policy.

If pid is zero, the policy and priority of the calling process are set.

The sched_priority member in param must lie between the minimum and maximum values returned by sched_get_priority_max() and sched_get_priority_min().

By default, the process priority and scheduling policy are inherited from or explicitly set by the parent process. Once running, the child process may change its priority by using this function.

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

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

Коды ошибок:

EFAULT
A fault occurred trying to access the buffers provided.
EINVAL
The priority or scheduling policy isn't a valid value.
EPERM
The calling process doesn't have sufficient privilege to set the priority.
ESRCH
The process pid doesn't exist.

Примеры:

See sched_getparam().

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

POSIX 1003.1 PS

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

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

In a multithreaded program, sched_setscheduler() sets the scheduling policy for thread 1 in the process pid, or for the calling thread if pid is 0.

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

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




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