Man Linux: Main Page and Category List

NAME

       sched_setscheduler - set scheduling policy and parameters (REALTIME)

SYNOPSIS

       #include <sched.h>

       int sched_setscheduler(pid_t pid, int policy,
              const struct sched_param *param);

DESCRIPTION

       The  sched_setscheduler()  function shall set the scheduling policy and
       scheduling parameters of the process specified by pid to policy and the
       parameters  specified in the sched_param structure pointed to by param,
       respectively. The value of the sched_priority member in the sched_param
       structure  shall be any integer within the inclusive priority range for
       the scheduling policy specified by policy.  If  the  value  of  pid  is
       negative,   the   behavior  of  the  sched_setscheduler()  function  is
       unspecified.

       The possible values  for  the  policy  parameter  are  defined  in  the
       <sched.h> header.

       If  a  process  specified by pid exists, and if the calling process has
       permission, the scheduling policy and scheduling  parameters  shall  be
       set for the process whose process ID is equal to pid.

       If  pid  is zero, the scheduling policy and scheduling parameters shall
       be set for the calling process.

       The conditions under which one process has the appropriate privilege to
       change the scheduling parameters of another process are implementation-
       defined.

       Implementations may require that the requesting process have permission
       to  set  its  own  scheduling  parameters  or those of another process.
       Additionally, implementation-defined restrictions may apply as  to  the
       appropriate  privileges  required  to  set  a  process’  own scheduling
       policy, or another process’ scheduling policy, to a particular value.

       The sched_setscheduler() function shall be considered successful if  it
       succeeds  in setting the scheduling policy and scheduling parameters of
       the process specified by pid to the values specified by policy and  the
       structure pointed to by param, respectively.

       If  the  scheduling  policy  specified by policy is SCHED_SPORADIC, the
       value specified  by  the  sched_ss_low_priority  member  of  the  param
       argument  shall  be any integer within the inclusive priority range for
       the   sporadic   server   policy.    The    sched_ss_repl_period    and
       sched_ss_init_budget  members of the param argument shall represent the
       time parameters used by the sporadic server scheduling policy  for  the
       target  process.  The  sched_ss_max_repl  member  of the param argument
       shall represent the maximum number of replenishments that  are  allowed
       to  be  pending  simultaneously  for  the  process scheduled under this
       scheduling policy.

       The specified sched_ss_repl_period shall be greater than  or  equal  to
       the  specified  sched_ss_init_budget for the function to succeed; if it
       is not, then the function shall fail.

       The value of sched_ss_max_repl shall be within the inclusive range  [1,
       {SS_REPL_MAX}]  for the function to succeed; if not, the function shall
       fail.

       If the scheduling policy specified by policy is  either  SCHED_FIFO  or
       SCHED_RR,    the   sched_ss_low_priority,   sched_ss_repl_period,   and
       sched_ss_init_budget members of the param argument shall have no effect
       on the scheduling behavior.

       The  effect  of this function on individual threads is dependent on the
       scheduling contention scope of the threads:

        * For threads with system scheduling contention scope, these functions
          shall have no effect on their scheduling.

        * For  threads  with process scheduling contention scope, the threads’
          scheduling policy and associated parameters shall not  be  affected.
          However,  the scheduling of these threads with respect to threads in
          other processes may be dependent on  the  scheduling  parameters  of
          their process, which are governed using these functions.

       If  an  implementation  supports  a two-level scheduling model in which
       library threads are multiplexed  on  top  of  several  kernel-scheduled
       entities,  then the underlying kernel-scheduled entities for the system
       contention scope threads shall not be affected by these functions.

       The underlying kernel-scheduled entities  for  the  process  contention
       scope  threads  shall  have  their  scheduling  policy  and  associated
       scheduling parameters changed to the values  specified  in  policy  and
       param,  respectively.  Kernel-scheduled  entities  for  use  by process
       contention scope threads that are created  after  this  call  completes
       shall   inherit  their  scheduling  policy  and  associated  scheduling
       parameters from the process.

       This function is not atomic  with  respect  to  other  threads  in  the
       process.   Threads  may continue to execute while this function call is
       in the  process  of  changing  the  scheduling  policy  and  associated
       scheduling parameters for the underlying kernel-scheduled entities used
       by the process contention scope threads.

RETURN VALUE

       Upon successful  completion,  the  function  shall  return  the  former
       scheduling policy of the specified process. If the sched_setscheduler()
       function fails to complete  successfully,  the  policy  and  scheduling
       parameters  shall  remain  unchanged,  and  the function shall return a
       value of -1 and set errno to indicate the error.

ERRORS

       The sched_setscheduler() function shall fail if:

       EINVAL The value of the policy parameter is invalid, or one or more  of
              the parameters contained in param is outside the valid range for
              the specified scheduling policy.

       EPERM  The requesting process does not have permission to set either or
              both  of  the  scheduling parameters or the scheduling policy of
              the specified process.

       ESRCH  No process can be found corresponding to that specified by  pid.

       The following sections are informative.

EXAMPLES

       None.

APPLICATION USAGE

       None.

RATIONALE

       None.

FUTURE DIRECTIONS

       None.

SEE ALSO

       sched_getparam()  ,  sched_getscheduler() , sched_setparam() , the Base
       Definitions volume of IEEE Std 1003.1-2001, <sched.h>

COPYRIGHT

       Portions of this text are reprinted and reproduced in  electronic  form
       from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
       -- Portable Operating System Interface (POSIX),  The  Open  Group  Base
       Specifications  Issue  6,  Copyright  (C) 2001-2003 by the Institute of
       Electrical and Electronics Engineers, Inc and The Open  Group.  In  the
       event of any discrepancy between this version and the original IEEE and
       The Open Group Standard, the original IEEE and The Open Group  Standard
       is  the  referee document. The original Standard can be obtained online
       at http://www.opengroup.org/unix/online.html .