如何在多核PowerPC上获取CPU ID?

时间:2010-10-13 20:48:52

标签: linux multicore powerpc

我有一个多线程应用程序,它运行在Linux 2.6.30的8核PowerPC处理器上。我想确定启动线程时使用的CPU。显而易见的答案是打印PID处理器ID专用寄存器。使用mfspr指令访问PID寄存器。我尝试在我的C程序中使用以下asm访问它:

asm(" mfspr %0, 286 " : "=r" (cpu_no));

问题是mfspr是一个特权指令,即使这个应用程序以root身份运行,它也会因非法指令错误而出错。在裸机应用程序上执行时,此指令工作正常。

虽然可以创建一个在内核空间中执行此指令的驱动程序,但当答案返回到线程时,它可能已经移动到另一个核心。

从Linux用户级进程有没有办法获取当前线程正在运行的核心的id?

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:-1)

另一种方法是使用WHOAMI注册。 WHOAMI寄存器返回读取它的核心的CPU ID。