Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1366945
  • 博文数量: 488
  • 博客积分: 161
  • 博客等级: 入伍新兵
  • 技术积分: 5064
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-01 07:37
个人简介

只有偏执狂才能生存

文章分类

全部博文(488)

文章存档

2016年(10)

2015年(112)

2014年(66)

2013年(272)

2012年(28)

分类: LINUX

2014-11-09 22:04:59

     最近整个了阿里云,一直以为是基于kvm的,今天用代码测试了下,原来是Xen的 

#include
#include
#include
#define SIGNATURE 0x40000000
static inline void __cpuid(unsigned int *eax, unsigned int *ebx,
         unsigned int *ecx, unsigned int *edx)
{
     asm volatile("cpuid"
             : "=a" (*eax),
             "=b" (*ebx),
             "=c" (*ecx),
             "=d" (*edx)
             : "0" (*eax), "2" (*ecx));
}

void cpuid(unsigned int op,
        unsigned int *eax, unsigned int *ebx,
        unsigned int *ecx, unsigned int *edx)
{
    *eax = op;
    *ecx = 0;
    __cpuid(eax, ebx, ecx, edx);
}

int main(int argc,char *argv[])
{
        unsigned int eax, ebx, ecx, edx;
        char signature[13];

        cpuid(SIGNATURE, &eax, &ebx, &ecx, &edx);
        memcpy(signature + 0, &ebx, 4);
        memcpy(signature + 4, &ecx, 4);
        memcpy(signature + 8, &edx, 4);
        signature[12] = 0;

       if (strncmp(signature, "KVMKVMKVM",9) == 0)
                printf("kvm\n");
        else if(strncmp(signature,"XenVMMXenVMM",12) == 0)
                printf("XEN\n");
        else if(strncmp(signature,"VMwareVMware",12) == 0)
                printf("VMware\n");
        else
                printf("%s\n",signature);
    
       return   0;
}


阅读(1002) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册