sched_setscheduler(S)
sched_setscheduler --
set scheduling policy
Syntax
cc . . . -lc
#include <sched.h>
int sched_setscheduler(pid_t pid, int policy, const struct sched_param
*param);
Description
sched_setscheduler sets the scheduling policy of the process
specified by pid to policy and the scheduling parameters
to param.
If pid is 0, the policy and parameters are set for the calling
process.
The following policies are available:
SCHED_FIFO-
first in first out. Processes are allowed on the CPU in the order in which
they were added to the queue of processes to be run, for each priority.
SCHED_RR-
round-robin. Identical to SCHED_FIFO except that a process
runs only for a set time slice (see
sched_rr_get_interval(S)).
Once the
process has completed its time slice it is placed on the tail of the queue of
processes to be run, for its priority.
SCHED_OTHER-
non-realtime scheduling. This uses the traditional UNIX scheduler.
On MPX systems, if pid specifies a process currently
running on a different CPU then the
process specified by pid will be taken off the CPU.
This is the equivalent of the process specified by pid making a
call to sched_yield.
The process which made the call to sched_setscheduler will
sleep while this occurs.
Return values
Upon successful completion sched_setscheduler returns the previous
scheduling policy of the process specified by pid. If an error has
occurred the policy and scheduling parameters of the target process will
remain unchanged, sched_setparam returns -1, and errno is
set to indicate the error.
Diagnostics
If sched_setscheduler terminates due to an error, it will set
errno to one of the following values:
[EINVAL]-
One or more of the scheduling parameters specified is out of the range
defined for the specified process's scheduling policy, or the specified policy
is incorrect.
[ENOSYS]-
The function is not supported.
[EPERM]-
The requesting process does not have permission to set either or both of the
scheduling parameters, or the scheduling policy of the process specified
by pid.
[ESRCH]-
The process, specified by pid, does not exist.
Examples
The following example illustrates the use of sched_setscheduler:
struct sched_param sp;
int policy;
...
if((policy = sched_getscheduler(0) == -1)) {
fprintf(stderr, ...
}
if(policy == SCHED_OTHER) {
sp.sched_priority = sched_get_priority_max(SCHED_FIFO);
sched_setscheduler(0, SCHED_FIFO, &sp)
...
}
...
Files
/usr/lib/libc.a-
linking library
See also
sched_get_priority_max(S),
sched_getparam(S),
sched_getscheduler(S),
sched_rr_get_interval(S),
sched_setparam(S),
sched_yield(S)
Standards conformance
Text reprinted and/or adapted from IEEE Std
1003.1b-1993, IEEE Standard for Information
Technology, POSIX Part 1: System Application
Program Interface (API) Amendment 1: Realtime
Extensions [C Language], copyright © 1993 by the
Institute of Electrical and Electronics Engineers, Inc. The
IEEE takes no responsibility for and will assume
no liability for damages resulting from the reader's
misinterpretation of said information resulting from the
placement and context in this publication. Information is
reproduced with the permission of the IEEE.
© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003