zoukankan      html  css  js  c++  java
  • 获取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;
    }

    水平有限,如果有错误,请帮忙提醒我。如果您觉得本文对您有帮助,可以点击下面的 推荐 支持一下我。版权所有,需要转发请带上本文源地址,博客一直在更新,欢迎 关注 。
  • 相关阅读:
    SQL*PLUS命令的使用大全
    Oracle总结
    SQL*PLUS命令的使用大全
    Java经典面试题
    学习Java的30个基本概念
    Java经典面试题
    学习Java的30个基本概念
    Oracle总结
    ORACLE大数据量下的分页解决方法
    XAMPP修改80和443端口及创建虚拟目录
  • 原文地址:https://www.cnblogs.com/10087622blog/p/7155408.html
Copyright © 2011-2022 走看看