如何从内核内部确定其线程组中的线程索引?

问题描述 投票:0回答:1

对于给定的线程组,我需要获取其每个成员线程的顺序索引,以从内核内部存储有关每个线程的一些数据,我可以访问

task_struct
。像“第 0 个线程首先创建,第 1 个线程第二个创建,...”之类的东西可以正常工作。

从一个线程组中区分线程的一种方法显然是引用它们的进程ID,但是,进程ID不是连续的,而我想获得某种按顺序依次排序的标识符(索引)。

linux-kernel pid threadgroup
1个回答
0
投票

线程在创建时被添加到其父级的

p->signal->thread_head
线程列表尾部(此处代码),因此您可以简单地使用
for_each_thread(p, t)
迭代线程。假设您已经掌握了线程组领导者的
task_struct
,这非常简单:

struct task_struct *thread;
unsigned thread_idx = 0;

for_each_thread(leader, thread) {
    // ... code here ...
    thread_idx++;
}
© www.soinside.com 2019 - 2024. All rights reserved.