thread_setsched 内核服务

用途

设置内核线程调度参数。

语法

#include <sys/thread.h>
#include <sys/sched.h>
int thread_setsched ( tid,  priority,  policy)
tid_t tid;
int priority;
int policy;

参数

描述
tid 指定内核线程。
优先级 (priority) 指定优先级。 它必须在 0 到 PRI_LOW的范围 0; 0 是最受青睐的优先级。
策略 指定调度策略。 它必须具有下列其中一个值:
SCHED_FIFO
表示固定优先级 "先进先出" 调度。
SCHED_FIFO2
允许将睡眠时间相对较短的线程重新排队到其优先级运行队列的头 (而不是尾)。
SCHED_FIFO3
使线程排队到它们的运行队列的头。
SCHED_RR
表示固定优先级循环调度。
SCHED_OTHER
表示缺省调度策略。

描述

thread_setsched 子例程用于设置内核线程的调度参数。 这同时包括在 优先级政策 参数中指定的优先级和调度策略。 调用线程和目标线程必须在同一个进程中。

将调度策略设置为 其他模式时,系统会选择优先级; 优先级 参数将被忽略。 影响使用缺省调度策略的线程的优先级的唯一方法是更改进程的 nice 值。

调用线程必须属于一个具有 root 用户权限的进程,才能将线程的调度策略更改为 模式 FIFOSCHED_FIFO2SCHED_FIFO3模式 RR

执行环境

thread_setsched 内核服务只能从 流程 环境中进行调用。

返回值

成功完成后,将返回 0。 否则,将返回 -1 并调用 getuerror 内核服务检查错误代码。

错误代码

描述
EINVAL 优先级政策 参数是无效的。
EPERM 调用内核线程没有足够的特权来执行此操作。
ESRCH 该内核线程 标识 不存在。