Provided by: manpages-posix-dev_2017a-2_all bug

PROLOG

       This  manual  page  is part of the POSIX Programmer's Manual.  The Linux implementation of
       this interface may differ (consult the corresponding Linux  manual  page  for  details  of
       Linux behavior), or the interface may not be implemented on Linux.

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 appropriate privileges 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  the  scheduling
       policy of the process, or the scheduling policy of another process, 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.

       See  Scheduling  Policies for a description on how this function affects the scheduling of
       the threads within the target process.

       If the current scheduling policy for the target process is not  SCHED_FIFO,  SCHED_RR,  or
       SCHED_SPORADIC,  the  result is implementation-defined; this case includes the SCHED_OTHER
       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. It is unspecified whether the
       sched_ss_repl_period and sched_ss_init_budget  values  are  stored  as  provided  by  this
       function or are rounded to align with the resolution of the clock being used.

       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

       Scheduling Policies, sched_getparam(), sched_getscheduler(), sched_setparam()

       The Base Definitions volume of POSIX.1‐2017, <sched.h>

COPYRIGHT

       Portions  of  this  text  are  reprinted  and  reproduced in electronic form from IEEE Std
       1003.1-2017, Standard for Information Technology -- Portable  Operating  System  Interface
       (POSIX),  The  Open Group Base Specifications Issue 7, 2018 Edition, Copyright (C) 2018 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 .

       Any  typographical  or  formatting errors that appear in this page are most likely to have
       been introduced during the conversion of the source files to man page  format.  To  report
       such errors, see https://www.kernel.org/doc/man-pages/reporting_bugs.html .