SMP中怎么识别代码运行在哪个核中?

本文介绍了一种在Linux环境下通过宏定义read_cpuid来获取当前运行代码所在CPU核心的ID的方法。该方法利用ARM架构特有的mrc指令从cp15读取处理器ID,由于每个核心的寄存器独立,因此在多核系统中可以区分不同核心。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在linux中,有这么一个宏用来获取当前代码处于哪个核:

#define read_cpuid(reg) \
({ \
unsigned int __val;\
asm("mrc p15, 0, %0, c0, c0, " __stringify(reg) \
   : "=r" (__val)\
   : \
   : "cc"); \
__val; \
})


mrc p15, 0, 5, c0, c0

是从cp15中,读取处理器ID。在SMP中,每个核都有独立的寄存器,所以不同的核心运行这段获取处理器ID代码得到的值不一样。具体的可以看cotex-a9的文档。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值