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

标签 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);
}

在我们的内核模块中,我们只能使用导出的函数符号,或者我们可以在我们的模块中从系统映射中硬编码内核函数地址,然后使用它。

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

最佳答案

你可以这样做:

struct task_struct *task;
task=per_cpu(current_task, cpu_id);

这个可以得到“per_cpu##current_task”,表示指定cpu中的cur_task。 这可能会满足您的要求。

关于linux - 如何在 SMP linux 中获取给定 cpu 的当前任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11635234/

相关文章:

linux - swap用完是什么意思?

linux - 读/写字符设备时如何避免高CPU使用率?

linux - Linux设备驱动程序是如何加载的?

linux-kernel - Napi调度是谁做的

linux - 段错误......在 Hello World 上

linux - 计算以符号开头的行数

linux - 如何加载和卸载内核内置的Linux驱动程序

CPU1上线失败

c - Linux 上 fork() 创建的子进程是否可以在 SMP 环境中的单独内核上运行?

linux - Linux 中的共享内存 fork 进程学习