sched_setscheduler(3)sched_setscheduler(3)NAMEsched_setscheduler - Sets the scheduling policy and scheduling parame‐
ters of the specified process (P1003.1b)
SYNOPSIS
#include <sched.h>
int sched_setscheduler ( pid_t pid, int policy, const struct
sched_param *param);
LIBRARY
Realtime Library (librt.so, librt.a)
PARAMETERS
Specifies the ID of the process for which scheduling policy and prior‐
ity is to be set. If pid is zero, the scheduling policy and priority is
set for the calling process. Specifies the scheduling policy to be set
(SCHED_FIFO, SCHED_RR, or SCHED_OTHER). Specifies a pointer to a
sched_param structure, which contains the scheduling parameters of the
specified process. Currently, the sched_param structure contains only a
priority field. The value of priority in the param structure indicates
the priority level.
DESCRIPTION
The sched_setscheduler function changes the scheduling policy and pri‐
ority of a process. Changing the scheduling policy and priority ensures
that an application can determine more effectively when a process will
run.
At run time, a process starts out with an initial priority of
SCHED_PRIO_USER_MAX. A call to either the sched_setparam or
sched_setscheduler function can raise or lower the priority of a
process. If you raise the priority higher than the initial priority,
the new priority becomes the maximum for the process. This higher maxi‐
mum priority exists for the life of the process or until the priority
is set to a new, higher priority through another call to the sched_set‐
param function. The maximum priority cannot be adjusted downward, but
subsequent calls to the sched_setparam or sched_setscheduler functions
can specify that a process run at a lower priority.
Three scheduling policies are supported: two fixed-priority scheduling
policies (SCHED_FIFO and SCHED_RR) and one timesharing policy
(SCHED_OTHER). Under a fixed-priority scheduling policy, only the user
sets and adjusts process priorities. Under a timesharing scheduling
policy, the scheduler automatically adjusts priorities according to
system resource usage and other factors.
The scheduling policies supported by the realtime interface are as fol‐
lows: Specifies a fixed-priority, first in-first out (FIFO) scheduling
policy. Processes waiting at a specific priority level are selected
from a process list that is ordered by the amount of time the processes
have been on the process list without being executed. Generally, the
process at the head of the list has waited the longest time; the
process at the tail of the list has waited the shortest time. Secifies
a fixed-priority, round-robin (RR) scheduling policy. Processes waiting
at a specific priority level are scheduled in much the same way as for
SCHED_FIFO, scheduling with the additional condition that the length
of time that a process executes is subject to a quantum. Specifies the
standard timesharing scheduling policy. Processes are scheduled in much
the same way as for the SCHED_FIFO scheduling policy with the addi‐
tional condition that the scheduler adjusts process priorities. Recal‐
culation of process priorities results in preemption.
Setting priorities in conjunction with a FIFO scheduling policy allows
a critical process to run as soon as it is ready, for as long as it
needs to run, because it will preempt other, lower-priority processes.
This behavior is important in situations where scheduling a process
must be as fast and as precise as possible.
Use the sched_get_priority_max and sched_get_priority_min functions to
determine the maximum and minimum values allowed for each scheduling
policy. The value of the priority field in the sched_param structure
pointed to by param can be any integer within the inclusive range for
the current scheduling policy, as defined in <sched.h>. Higher numeri‐
cal values for param represent higher priorities.
The scheduling policy of a process is inherited across fork and exec
calls.
An application designed for portability must initialize all fields of
the sched_param structure before making the function call.
You must have superuser privileges to call the sched_setscheduler func‐
tion.
RETURN VALUES
On a successful call to sched_setscheduler, the former scheduling pol‐
icy of the process is returned. On an unsuccessful call, a value of -1
is returned and errno is set to indicate that an error occurred and
that the scheduling policy and parameters of the specified process are
unchanged.
ERRORS
The sched_setscheduler function fails under the following conditions:
An invalid value is specified for the policy argument or the param
pointer is NULL. The requesting process does not have permission to
set either the priority or the scheduling policy of the specified
process. No process can be found corresponding to that specified by
pid.
SEE ALSOgetpid(2), sched_getparam(3), sched_getscheduler(3), sched_setparam(3)
Guide to Realtime Programming
sched_setscheduler(3)