获取cpu真实型号

感谢文洋兄的思路。亲测有效。

[root@storage GetCpuType]# ./main.o
Intel(R) Xeon(R) CPU C5528 @ 2.13GHz

#include <stdio.h>
#include <stdlib.h>

char x86_model_id[64];

static inline void
cpuid(unsigned int op, unsigned int *a, unsigned int *b, unsigned int *c,
unsigned int *d)
{
__asm__ __volatile__ (".byte 0x53 cpuid "
"movl %%ebx, %%esi .byte 0x5b"
: "=a" (*a),
"=S" (*b),
"=c" (*c),
"=d" (*d)
: "a" (op));
}

static void get_model_name()
{
unsigned int *v;
char *p, *q;

v = (unsigned int *)x86_model_id;
cpuid(0x80000002, &v[0], &v[1], &v[2], &v[3]);
cpuid(0x80000003, &v[4], &v[5], &v[6], &v[7]);
cpuid(0x80000004, &v[8], &v[9], &v[10], &v[11]);
x86_model_id[48] = 0;

/*
* Intel chips right-justify this string for some dumb reason;
* undo that brain damage:
*/
p = q = &x86_model_id[0];
while (*p == ' ')
p++;
if (p != q) {
while (*p)
*q++ = *p++;
while (q <= &x86_model_id[48])
*q++ = ''; /* Zero-pad the rest */
}
}


int main()
{
get_model_name();

printf("%s ", x86_model_id);
return 0;
}

水平有限,如果有错误,请帮忙提醒我。如果您觉得本文对您有帮助,可以点击下面的 推荐 支持一下我。版权所有,需要转发请带上本文源地址,博客一直在更新,欢迎 关注 。
原文地址:https://www.cnblogs.com/10087622blog/p/7155408.html