<assertions>
  <assertion id="1" tag="ref:XSH6:{System Interfaces:sched_setscheduler:DESCRIPTION}">
   sched_setscheduler() sets 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
  </assertion>
  <assertion id="2" tag="ref:XSH6:{System Interfaces:sched_setscheduler:DESCRIPTION}">
   If pid is negative, the behavior of sched_setscheduler() is unspecified
  </assertion>
  <assertion id="3" tag="ref:XSH6:{System Interfaces:sched_setscheduler:DESCRIPTION}">
   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
  </assertion>
  <assertion id="4" tag="ref:XSH6:{System Interfaces:sched_setscheduler:DESCRIPTION}">
   If pid is zero, the scheduling policy and scheduling parameters shall be set
   for the calling process
  </assertion>
  <assertion id="5" tag="ref:XSH6:{System Interfaces:sched_setscheduler:DESCRIPTION}">
   The condition under which one process has the appropriate privilege to
   change the scheduling parameters of another process are
   implementation-defined
  </assertion>
  <assertion id="6" tag="ref:XSH6:{System Interfaces:sched_setscheduler:DESCRIPTION}">
   Implementations may require that the requesting process have permission to
   set its own scheduling parameters or those of another process
  </assertion>
  <assertion id="7" tag="ref:XSH6:{System Interfaces:sched_setscheduler:DESCRIPTION}">
   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
  </assertion>
  <assertion id="8" tag="ref:XSH6:{System Interfaces:sched_setscheduler:DESCRIPTION}">
   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
  </assertion>
  <assertion id="9" tag="ref:XSH6:{System Interfaces:sched_setscheduler:DESCRIPTION} pt:SS">
   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
  </assertion>
  <assertion id="10" tag="ref:XSH6:{System Interfaces:sched_setscheduler:DESCRIPTION} pt:SS">
   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
  </assertion>
  <assertion id="11" tag="ref:XSH6:{System Interfaces:sched_setscheduler:DESCRIPTION} pt:SS">
   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
  </assertion>
  <assertion id="12" tag="ref:XSH6:{System Interfaces:sched_setscheduler:DESCRIPTION}">
   For threads with system scheduling contention scope, this function shall
   have no effect on their scheduling
  </assertion>
  <assertion id="13" tag="ref:XSH6:{System Interfaces:sched_setscheduler:DESCRIPTION}">
   For threads with process scheduling contention scope, the threads'
   scheduling policy and associated parameters shall not be affected
  </assertion>
  <assertion id="14" tag="ref:XSH6:{System Interfaces:sched_setscheduler:DESCRIPTION}">
   The underlying kernel-scheduled entities for the system contention scope
   threads shall not be affected by this function
  </assertion>
  <assertion id="15" tag="ref:XSH6:{System Interfaces:sched_setscheduler:DESCRIPTION}">
   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
  </assertion>
  <assertion id="16" tag="ref:XSH6:{System Interfaces:sched_setscheduler:RETURN VALUE}">
   Upon successful completion, the function shall return the former scheduling policy of the specified process
  </assertion>
  <assertion id="17" tag="ref:XSH6:{System Interfaces:sched_setscheduler:RETURN VALUE}">
   If the sched_setscheduler() function fails to complete successfully, the
   policy and scheduling parameters shall remain unchanged
  </assertion>
  <assertion id="18" tag="ref:XSH6:{System Interfaces:sched_setscheduler:RETURN VALUE}">
   If the sched_setscheduler() function fails to complete successfully, the
   function shall return a value of -1
  </assertion>
  <assertion id="19" tag="ref:XSH6:{System Interfaces:sched_setscheduler:ERRORS}">
   The sched_setscheduler() function shall return EINVAL if 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
  </assertion>
  <assertion id="20" tag="ref:XSH6:{System Interfaces:sched_setscheduler:ERRORS}">
   The sched_setscheduler() function shall return EPERM if the requesting
   process does not have permission to set either or both of the scheduling
   parameters or the scheduling policy of the specified process
  </assertion>
  <assertion id="21" tag="ref:XSH6:{System Interfaces:sched_setscheduler:ERRORS}">
   The sched_setscheduler() function shall return ESRCH if no process can be
   found corresponding to that specified by pid
  </assertion>

  <assertion id="22" tag="ref:XSH6:{System Interfaces:sched_setscheduler:DESCRIPTION}">
   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
  </assertion>
</assertions>
