我想知道每个进程的下一个和上一个进程,它的状态是“TASK_RUNNING”。在较旧的内核中,有一个 run_list 结构作为 task_struct 的成员。我怎样才能在内核 3 中做这样的事情?例如跟踪正在运行的进程列表,但我不知道内核 3 中将哪个结构定义为此类列表。
问问题
710 次
1 回答
4
在较新的内核中,Linux 不会维护所有正在运行的进程的列表。相反,CFS 使用红黑树sched_entity
来存储有关正在运行的进程的信息。
task_struct
包含se
类型的成员sched_entity
。计划实体包含run_node
类型的成员struct rb_node
。这就是你要找的。
include/linux/rbtree.h
rbtree的接口请咨询。要从中提取task_struct
,sched_entity
您可以使用container_of(your_se, struct task_struct, se);
(咨询task_of()
in kernel/sched/fair.c
)。
于 2013-08-04T19:48:42.740 回答