Change the priority and scheduling policy of a process
Synopsis:
#include <sched.h>
int sched_setscheduler( 
          pid_t pid,
          int policy,
          const struct sched_param *param );
 
Arguments:
- pid
 
- The ID of the process whose priority and scheduling policy you want to
  set, or zero if you want to set them for the current process.
 
- policy
 
- The scheduling policy, which must be one of:
  
  - SCHED_FIFO — a fixed-priority scheduler in which
    the highest priority ready thread runs until it blocks or is preempted
    by a higher priority thread.
    
  
 
  - SCHED_RR — similar to SCHED_FIFO,
    except that threads at the same priority level timeslice (round robin)
    every 4 × the clock period (see
    ClockPeriod()).
    
  
 
  - SCHED_OTHER — currently the same as
    SCHED_RR.
    
      
  
 
  - SCHED_SPORADIC — sporadic scheduling.
 
  
  
  For more information, see
  Thread scheduling
  in the QNX Neutrino Microkernel chapter of the
  System Architecture guide.
  
 
- param
 
- A pointer to a
  sched_param
  structure whose
  sched_priority member holds the priority that you want to
  assign to the process.
 
 
Library:
libc
Use the -l c option to
qcc
to link against this library.
This library is usually included automatically.
 
Description:
The sched_setscheduler() function changes the priority of
process pid to that of the sched_priority member in
the sched_param structure passed as param, and the
scheduling policy is set to policy.
If pid is zero, the policy and priority of the calling process are set.
Note: 
- In QNX Neutrino, scheduling is associated with threads, not processes, so
  sched_setscheduler() sets
  the scheduling policy for thread 1 in the process pid,
  or for the calling thread if pid is 0.
 
- In order to set the scheduling policy and priority for a process whose user ID is different from
  the calling process's real or effective user ID, your process must have the
  PROCMGR_AID_SCHEDULE ability enabled.
  In order to change its priority to a value above the maximum permitted for unprivileged processes,
  your process must have the PROCMGR_AID_PRIORITY ability enabled.
  For more information, see
  procmgr_ability().
  
 
 
The sched_priority member in param must lie between
the minimum and maximum values returned by
sched_get_priority_max() and
sched_get_priority_min().
By default, the process priority and scheduling policy are inherited from
or explicitly set by the parent process. 
Once running, the child process may change its priority by
using this function.
 
Returns:
The previous scheduling policy, or -1 if an error occurs
(errno is set).
 
Errors:
- EFAULT
 
- A fault occurred trying to access the buffers provided.
 
- EINVAL
 
- The priority or scheduling policy isn't a valid value.
 
- EPERM
 
- The calling process doesn't have the required permission; see
  procmgr_ability().
 
- ESRCH
 
- The process pid doesn't exist.
 
 
Classification:
POSIX 1003.1 PS
| Safety: | 
  | 
| Cancellation point | 
No | 
| Interrupt handler | 
No | 
| Signal handler | 
Yes | 
| Thread | 
Yes |