Provided by: manpages-posix-dev_2.16-1_all bug

NAME

       sched_setparam - set scheduling parameters (REALTIME)

SYNOPSIS

       #include <sched.h>

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

DESCRIPTION

       The sched_setparam() function shall set the scheduling parameters of the process specified
       by pid to the values specified by the sched_param structure  pointed  to  by  param.   The
       value  of  the  sched_priority  member  in  the sched_param structure shall be any integer
       within the inclusive priority range for the  current  scheduling  policy  of  the  process
       specified by pid. Higher numerical values for the priority represent higher priorities. If
       the  value  of  pid  is  negative,  the  behavior  of  the  sched_setparam()  function  is
       unspecified.

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

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

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

       Implementations  may  require  the requesting process to have the appropriate privilege to
       set its own scheduling parameters or those of another process.

       The target process, whether it is running or not running, shall be moved to  the  tail  of
       the thread list for its priority.

       If  the  priority  of the process specified by the pid argument is set higher than that of
       the lowest priority running process and if the specified process  is  ready  to  run,  the
       process  specified  by  the  pid argument shall preempt a lowest priority running process.
       Similarly, if the process calling sched_setparam() sets its own priority lower  than  that
       of  one  or  more  other non-empty process lists, then the process that is the head of the
       highest priority list shall also preempt the calling process. Thus, in  either  case,  the
       originating  process  might  not  receive  notification of the completion of the requested
       priority change until the higher priority process has executed.

       If the scheduling policy of the target process 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 to
       be  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 of the target process  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. If the scheduling policy of this
       process  is  not SCHED_FIFO, SCHED_RR, or SCHED_SPORADIC, the effects of these members are
       implementation-defined; this case includes the SCHED_OTHER policy.

       If the current scheduling policy for the process  specified  by  pid  is  not  SCHED_FIFO,
       SCHED_RR,    or SCHED_SPORADIC,   the result is implementation-defined; this case includes
       the SCHED_OTHER policy.

       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
          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 parameters changed to the value specified in param. 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 for the underlying kernel-scheduled entities used by the process  contention  scope
       threads.

RETURN VALUE

       If successful, the sched_setparam() function shall return zero.

       If  the call to sched_setparam() is unsuccessful, the priority shall remain unchanged, and
       the function shall return a value of -1 and set errno to indicate the error.

ERRORS

       The sched_setparam() function shall fail if:

       EINVAL One or more of the requested scheduling parameters is outside the range defined for
              the scheduling policy of the specified pid.

       EPERM  The  requesting  process  does not have permission to set the scheduling parameters
              for the specified process, or does not have the  appropriate  privilege  to  invoke
              sched_setparam().

       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_setscheduler()  , 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 .