每个从sched_getscheduler(pid)返回int值的调度策略对应于什么? [C]

时间:2019-02-11 17:05:33

标签: c scheduler taskscheduler sched-deadline

当我使用以下代码将调度策略设置为“截止日期”时:

struct sched_attr attr = {
          .size = sizeof(attr),
          .sched_policy = SCHED_DEADLINE,
          .sched_runtime = 30000000,
          .sched_period = 100000000,
          .sched_deadline = 100000000
      };

  pid_t pid = getpid();
    printf("pid=(%d)\n",pid);

  if (sched_setattr(pid, &attr, 0)){
    printf("[ERROR] sched_setattr()\n");
    perror("[ERROR] sched_setattr()\n");
  }

  // Check scheduler policy is set correctly
  printf("Scheduler Policy is %d.\n", sched_getscheduler(pid));

上述代码的结果如下:

  

pid =(XXXXXX)

     

计划策略是6。

有人可以解释sched_getscheduler(pid)中哪个返回int值对应于哪个调度程序策略吗?

例如:从上述代码中,我认为6对应于SCHED_DEADLINE策略。

1 个答案:

答案 0 :(得分:2)

您可以在自己的系统上轻松找到类似这样的东西,例如:

$ grep -r SCHED_DEADLINE /usr/include/ 
/usr/include/linux/sched.h:
#define SCHED_DEADLINE      6
$ grep define.SCHED_ /usr/include/linux/sched.h 
#define SCHED_NORMAL        0
#define SCHED_FIFO      1
#define SCHED_RR        2
#define SCHED_BATCH     3
#define SCHED_IDLE      5
#define SCHED_DEADLINE      6