 |
Index for Section 3 |
|
 |
Alphabetical listing for S |
|
 |
Bottom of page |
|
sched_setscheduler(3)
NAME
sched_setscheduler - Set the scheduling policy and scheduling parameters
of the specified process (P1003.1b)
SYNOPSIS
#include <sched.h>
int sched_setscheduler (
pid_t pid,
int policy,
const struct sched_param *param);
PARAMETERS
pid The process identification of the process whose scheduling policy
and priority is set. If pid is zero, the scheduling policy and
priority is set for the calling process.
policy The scheduling policy to be set (SCHED_FIFO, SCHED_RR, or
SCHED_OTHER).
*param 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 priority
of a process. Changing the scheduling policy and priority ensures that an
application can determine more effectively when a process will run.
At runtime, 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 maximum 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_setparam 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 follows:
· SCHED_FIFO - 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.
· SCHED_RR - specifies 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.
· SCHED_OTHER - specifies the standard timesharing scheduling policy.
Processes are scheduled in much the same way as for the SCHED_FIFO
scheduling policy with the additional condition that the scheduler
adjusts process priorities. Recalculation 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 numerical
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 function.
RETURN VALUES
On a successful call to sched_setscheduler the former scheduling policy 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 the scheduling
policy and parameters of the specified process are unchanged.
ERRORS
The sched_setscheduler function fails under the following conditions:
[EINVAL] Invalid value specified for the policy argument, the param
pointer is NULL.
[EPERM] The requesting process does not have permission to set
either or both the priority or the scheduling policy of the
specified process.
[ESRCH] No process can be found corresponding to that specified by
pid.
RELATED INFORMATION
getpid(2), sched_getparam(3), sched_getscheduler(3), sched_setparam(3)
 |
Index for Section 3 |
|
 |
Alphabetical listing for S |
|
 |
Top of page |
|