获取Intel CPU 信息和温度
CPU信息可以通过cpuid指令获取,在用户空间可以通过内嵌汇编代码实现,代码如下:
struct cpuid_res {
uint32_t eax;
uint32_t ebx;
uint32_t ecx;
uint32_t edx;
};
static inline struct cpuid_res cpuid(int op)
{
struct cpuid_res result;
asm volatile(
"mov %%ebx, %%edi;"
"cpuid;"
"mov %%ebx, %%esi;"
"mov %%edi, %%ebx;"
: "=a" (result.eax),
"=S" (result.ebx),
"=c" (result.ecx),
"=d" (result.edx)
: "0" (op)
: "edi");
return result;
}
获取CPU厂家名称
以eax=0 执行 cpuid,eax为0表示读取vendor id,一共12字节,依次在ebx、edx、ecx
result = cpuid(0);
vendor_name[0] = (result.ebx >> 0) & 0xff;