我想知道每个进程的下一个和以前的进程,它的状态是"TASK_RUNNING“。在较老的内核中,有一个run_list结构作为task_struct的成员。我如何在内核3中做这样的事情呢?例如,跟踪正在运行的进程的列表,但我不知道在内核3中哪个结构被定义为这样的列表。
发布于 2013-08-04 19:48:42
在较新的内核中,Linux并不维护所有正在运行的进程的列表。相反,CFS使用sched_entity的红黑树来存储有关正在运行的进程的信息。
task_struct包含类型为sched_entity的成员se。Sched实体包含类型为run_node的成员struct rb_node。这就是你要找的东西。
向include/linux/rbtree.h查询rbtree接口。要从task_struct中提取sched_entity,可以使用container_of(your_se, struct task_struct, se); (请参阅kernel/sched/fair.c中的task_of() )。
https://stackoverflow.com/questions/18043288
复制相似问题