Changes the scheduling policy and priority of a kernel thread.
Standard C library (libc.a)
#include <sys/sched.h> #include <sys/pri.h> #include <sys/types.h> int thread_setsched (tid, priority, policy) tid_t tid; int priority; int policy;
The thread_setsched subroutine changes the scheduling policy and priority of a kernel thread. User threads (pthreads) have their own scheduling attributes that in some cases allow a pthread to execute on top of multiple kernel threads. Therefore, if the policy or priority change is being granted on behalf of a pthread, then the pthread's contention scope should be PTHREAD_SCOPE_SYSTEM.
Note: Caution must be exercised when using the thread_setsched subroutine, since improper use may result in system hangs. See sys/pri.h for restrictions on thread priorities.
tid | Specifies the kernel thread ID of the thread whose priority and policy are to be changed. | ||||||
priority | Specifies the priority to use for this kernel thread. The priority parameter is ignored if the policy is being set to SCHED_OTHER. The priority parameter must have a value in the range 0 to PRI_LOW. PRI_LOW is defined in sys/pri.h. See sys/pri.h for more information on thread priorities. | ||||||
policy | Specifies the policy to use for this kernel thread. The policy parameter can be one of the following values, which are defined in sys/sched.h:
|
Upon successful completion, the thread_setsched subroutine returns a value of zero. If the thread_setsched subroutine is unsuccessful, a value of -1 is returned and the errno global variable is set to indicate the error.
The thread_setsched subroutine is unsuccessful if one or more of the following is true:
ESRCH | The kernel thread id tid is invalid. |
EINVAL | The policy or priority is invalid. |
EPERM | The caller does not have enough privilege to change the policy or priority. |
This subroutine is part of the Base Operating System (BOS) Runtime.