c - sched_getscheduler(pid)返回的int值分别对应什么调度策略? [C]

标签 c scheduler taskscheduler sched-deadline

当我使用以下代码将调度策略设置为 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)

Scheduler Policy is 6.

谁能解释一下 sched_getscheduler(pid) 的哪个返回 int 值对应于哪个调度程序策略?

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

最佳答案

你可以很容易地在你的系统上自己找到这样的东西,例如:

$ 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

关于c - sched_getscheduler(pid)返回的int值分别对应什么调度策略? [C],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54635617/

相关文章:

c - 使用指向结构的指针而不是创建静态本地副本

function - 云调度程序突然给出 "INVALID_ARGUMENT"错误

spring-boot - @Scheduled 和 @Async 在 spring-boot 中共享相同的线程池

c++ - 如何在任务计划程序中显示所有任务

windows - 从任务计划程序调用时,Powershell 输出无法正确记录

c - Linux 中 chattr 的替代方法

c++ - gmtime算法的最小实现?

c - 如何使用 C 列出 Windows Mobile 中文件夹中的文件?

java - java中单CPU的线程调度程序?

python apscheduler - 跳过 : maximum number of running instances reached