36.7. sched_attr 结构
sched_attr 结构包含或定义指定线程的调度策略及其关联的属性。sched_attr 结构的格式如下:
struct sched_attr {
u32 size;
u32 sched_policy;
u64 sched_flags;
s32 sched_nice;
u32 sched_priority;
/* SCHED_DEADLINE fields */
u64 sched_runtime;
u64 sched_deadline;
u64 sched_period;
};
sched_attr 数据结构
- size
线程大小(以字节为单位)。如果结构的大小小于内核结构,则假定其他字段为 0。
如果大小大于内核结构,内核会将所有其他字段验证为0。注意当
sched_attr结构大于内核结构大小时,sched_setattr ()函数会失败,并带有E2BIG错误。- sched_policy
- 调度策略
- sched_flags
当进程使用 fork () 函数时,帮助控制调度行为。
调用过程称为父进程,新进程称为子进程。有效值:-
0:子进程从父进程继承调度策略。 -
SCHED_FLAG_RESET_ON_FORK: fork ():子进程不会从父进程继承调度策略。相反,它被设置为默认的调度策略(struct sched_attr){ .sched_policy = SCHED_OTHER, }。
-
- sched_nice
-
指定在使用
SCHED_OTHER或SCHED_BATCH调度策略时设置的nice值。nice值是范围为-20(高优先级)到+19(低优先级)的数字。 - sched_priority
-
指定在调度
SCHED_FIFO或SCHED_RR时要设置的静态优先级。对于其他策略,将 priority 指定为0。
只能为截止时间调度指定 SCHED_DEADLINE 字段:
-
sched_runtime :指定截止时间调度的
runtime参数。该值以纳秒表示。 -
SCHED_ DEADLINE : 指定
截止时间调度的截止时间参数。该值以纳秒表示。 -
sched_period :指定截止时间调度的
period参数。该值以纳秒表示。