2

我想知道每个进程的下一个和上一个进程,它的状态是“TASK_RUNNING”。在较旧的内核中,有一个 run_list 结构作为 task_struct 的成员。我怎样才能在内核 3 中做这样的事情?例如跟踪正在运行的进程列表,但我不知道内核 3 中将哪个结构定义为此类列表。

4

1 回答 1

4

在较新的内核中,Linux 不会维护所有正在运行的进程的列表。相反,CFS 使用红黑树sched_entity来存储有关正在运行的进程的信息。

task_struct包含se类型的成员sched_entity。计划实体包含run_node类型的成员struct rb_node。这就是你要找的。

include/linux/rbtree.hrbtree的接口请咨询。要从中提取task_structsched_entity您可以使用container_of(your_se, struct task_struct, se);(咨询task_of()in kernel/sched/fair.c)。

于 2013-08-04T19:48:42.740 回答