如何在SMP linux中获取给定cpu的当前任务?

如何在SMP linux中获取给定cpu的当前任务?,linux,linux-kernel,smp,Linux,Linux Kernel,Smp,我正在编写一个内核模块,它试图获取给定cpu的当前任务,例如 for_each_possible_cpu(cpu) { p = curr_task(cpu); printk("current task on cpu %d is %d\n", cpu, p->pid); } 在我们的内核模块中,我们只能使用导出的函数符号,或者我们可以从模块中的系统映射中硬编码内核func地址,然后使用它 现在我只找到了IA64的curr_任务函数,如何在X86_32的给定cpu上获取当

我正在编写一个内核模块,它试图获取给定cpu的当前任务,例如

for_each_possible_cpu(cpu)
{
     p = curr_task(cpu);
     printk("current task on cpu %d is %d\n", cpu, p->pid);
}
在我们的内核模块中,我们只能使用导出的函数符号,或者我们可以从模块中的系统映射中硬编码内核func地址,然后使用它

现在我只找到了IA64的curr_任务函数,如何在X86_32的给定cpu上获取当前任务?谢谢。

您可以这样做:

struct task_struct *task;
task=per_cpu(current_task, cpu_id);
这一个可以得到“每cpu当前任务”,它表示指定cpu中的当前任务。 这可能满足您的要求。

您可以这样做:

struct task_struct *task;
task=per_cpu(current_task, cpu_id);
这一个可以得到“每cpu当前任务”,它表示指定cpu中的当前任务。 这可以满足你的要求