CFS调度程序:如何知道为sched_entity分配了哪个任务?

时间:2012-05-31 09:47:33

标签: linux-kernel scheduling kernel

我在sched_fair.c里面,我想记录一些事情......但是我需要知道哪个任务(pid)与我看到的每个sched_entity相关联..在struct sched_entity的定义中我不知道看不到对父结构(task_struct)的任何引用

这是sched_entity的代码:

struct sched_entity {
    struct load_weight  load;       /* for load-balancing */
    struct rb_node      run_node;
    struct list_head    group_node;
    unsigned int        on_rq;

    u64         exec_start;
    u64         sum_exec_runtime;
    u64         vruntime;
    u64         prev_sum_exec_runtime;

    u64         nr_migrations;

#ifdef CONFIG_SCHEDSTATS
    struct sched_statistics statistics;
#endif

#ifdef CONFIG_FAIR_GROUP_SCHED
    struct sched_entity *parent;
    /* rq on which this entity is (to be) queued: */
    struct cfs_rq       *cfs_rq;
    /* rq "owned" by this entity/group: */
    struct cfs_rq       *my_q;
#endif
};

1 个答案:

答案 0 :(得分:3)

鉴于 sched_entity * se:

struct task_struct * p = task_of(se);

为您提供包含任务的结构..