目前我正在运行Ubuntu 16.04,Linux内核版本为4.16.我编写了一个虚拟程序,将其调度程序更改为SCHED_DEADLINE.但是当我尝试编译它时,它找不到SCHED_DEADLINE所需的结构和宏的定义.大多数代码段都是从这里获取的(第24页).以下是测试程序:
#define _GNU_SOURCE
#include <pthread.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sched.h>
int main(int argc, char* argv[]) {
struct sched_attr attr;
attr.size = sizeof(attr);
attr.sched_policy = SCHED_DEADLINE;
attr.sched_runtime = 30000000;
attr.sched_period = 100000000;
attr.sched_deadline = attr.sched_period;
if (sched_setattr(gettid(), &attr, 0))
perror("sched_setattr()");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是编译的输出:
sched_deadline.c: In function ‘main’:
sched_deadline.c:11:20: error: storage size of ‘attr’ isn’t known
struct sched_attr attr;
^
sched_deadline.c:12:21: error: invalid application of ‘sizeof’ to incomplete type ‘struct attr’
attr.size = sizeof(struct attr); …Run Code Online (Sandbox Code Playgroud)