代码之家  ›  专栏  ›  技术社区  ›  Somdip Dey

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

  •  0
  • Somdip Dey  · 技术社区  · 7 年前

    当我使用以下代码将计划策略设置为截止时间时:

    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_期限策略。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Ctx    7 年前

    在您的系统中,您可以很容易地发现类似的情况,例如:

    $ 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