SCHED_SETSCHEDULER(3)      POSIX Programmer's Manual     SCHED_SETSCHEDULER(3)



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


NNAAMMEE
       sched_setscheduler -- set scheduling policy and parameters (RREEAALLTTIIMMEE)

SSYYNNOOPPSSIISS
       #include <sched.h>

       int sched_setscheduler(pid_t _p_i_d, int _p_o_l_i_c_y,
           const struct sched_param *_p_a_r_a_m);

DDEESSCCRRIIPPTTIIOONN
       The _s_c_h_e_d___s_e_t_s_c_h_e_d_u_l_e_r() function shall set the scheduling policy and
       scheduling parameters of the process specified by _p_i_d to _p_o_l_i_c_y and the
       parameters specified in the sscchheedd__ppaarraamm structure pointed to by _p_a_r_a_m,
       respectively. The value of the _s_c_h_e_d___p_r_i_o_r_i_t_y member in the sscchheedd__ppaarraamm
       structure shall be any integer within the inclusive priority range for
       the scheduling policy specified by _p_o_l_i_c_y.  If the value of _p_i_d is
       negative, the behavior of the _s_c_h_e_d___s_e_t_s_c_h_e_d_u_l_e_r() function is
       unspecified.

       The possible values for the _p_o_l_i_c_y parameter are defined in the
       _<_s_c_h_e_d_._h_> header.

       If a process specified by _p_i_d 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 _p_i_d.

       If _p_i_d 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 _s_c_h_e_d___s_e_t_s_c_h_e_d_u_l_e_r() function shall be considered successful if it
       succeeds in setting the scheduling policy and scheduling parameters of
       the process specified by _p_i_d to the values specified by _p_o_l_i_c_y and the
       structure pointed to by _p_a_r_a_m, respectively.

       See _S_c_h_e_d_u_l_i_n_g _P_o_l_i_c_i_e_s 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 _s_c_h_e_d___s_s___r_e_p_l___p_e_r_i_o_d shall be greater than or equal to
       the specified _s_c_h_e_d___s_s___i_n_i_t___b_u_d_g_e_t for the function to succeed; if it
       is not, then the function shall fail.

       The value of _s_c_h_e_d___s_s___m_a_x___r_e_p_l 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 _s_c_h_e_d___s_s___r_e_p_l___p_e_r_i_o_d and
       _s_c_h_e_d___s_s___i_n_i_t___b_u_d_g_e_t 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.

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

EERRRROORRSS
       The _s_c_h_e_d___s_e_t_s_c_h_e_d_u_l_e_r() function shall fail if:

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

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

       EESSRRCCHH  No process can be found corresponding to that specified by _p_i_d.

       _T_h_e _f_o_l_l_o_w_i_n_g _s_e_c_t_i_o_n_s _a_r_e _i_n_f_o_r_m_a_t_i_v_e_.

EEXXAAMMPPLLEESS
       None.

AAPPPPLLIICCAATTIIOONN UUSSAAGGEE
       None.

RRAATTIIOONNAALLEE
       None.

FFUUTTUURREE DDIIRREECCTTIIOONNSS
       None.

SSEEEE AALLSSOO
       _S_c_h_e_d_u_l_i_n_g _P_o_l_i_c_i_e_s, _s_c_h_e_d___g_e_t_p_a_r_a_m(), _s_c_h_e_d___g_e_t_s_c_h_e_d_u_l_e_r(),
       _s_c_h_e_d___s_e_t_p_a_r_a_m()

       The Base Definitions volume of POSIX.1-2008, <<sscchheedd..hh>>

CCOOPPYYRRIIGGHHTT
       Portions of this text are reprinted and reproduced in electronic form
       from IEEE Std 1003.1, 2013 Edition, Standard for Information Technology
       -- Portable Operating System Interface (POSIX), The Open Group Base
       Specifications Issue 7, Copyright (C) 2013 by the Institute of
       Electrical and Electronics Engineers, Inc and The Open Group.  (This is
       POSIX.1-2008 with the 2013 Technical Corrigendum 1 applied.) 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.unix.org/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 .



IEEE/The Open Group                  2013                SCHED_SETSCHEDULER(3)
