CPU id是percpu变量,调用smp_processor_id()
可以取出。内核里对它的注释如下:
smp_processor_id() is safe if it's used in a preemption-off critical section, or in a thread that is bound to the current CPU. |
所以除非是在绑定在CPU上的线程中使用,否则必须要先关抢占。内核已经封装了带关抢占的API:
典型用法:
int cpuid = get_cpu(); |