From 55f87d90a521f73c11408383bfc3fc7d84cc70ff Mon Sep 17 00:00:00 2001 From: open-license-manager <rillf@maildrop.cc> Date: 周五, 01 8月 2014 23:52:41 +0800 Subject: [PATCH] new default identification method --- src/library/os/linux/os-linux.c | 28 +++++++++++++++++++++++++--- 1 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/library/os/linux/os-linux.c b/src/library/os/linux/os-linux.c index f4f5d8c..b791859 100644 --- a/src/library/os/linux/os-linux.c +++ b/src/library/os/linux/os-linux.c @@ -49,9 +49,9 @@ FUNCTION_RETURN f_return = OK; struct ifaddrs *ifaddr, *ifa; - int family, i, s, n, if_name_position; + int family, i, n, if_name_position; unsigned int if_num, if_max; - char host[NI_MAXHOST]; + //char host[NI_MAXHOST]; char *ifnames; if (getifaddrs(&ifaddr) == -1) { @@ -60,7 +60,7 @@ } if (adapterInfos != NULL) { - memset(adapterInfos, 0, (*adapter_info_size) * sizeof(AdapterInfo)); + memset(adapterInfos, 0, (*adapter_info_size) * sizeof(AdapterInfo)); } /* count the maximum number of interfaces */ @@ -363,6 +363,28 @@ } } +static void _getCpuid(unsigned int* p, unsigned int ax) { + __asm __volatile + ( "movl %%ebx, %%esi\n\t" + "cpuid\n\t" + "xchgl %%ebx, %%esi" + : "=a" (p[0]), "=S" (p[1]), + "=c" (p[2]), "=d" (p[3]) + : "0" (ax) + ); +} + +FUNCTION_RETURN getCpuId(unsigned char identifier[6]) { + unsigned int i; + unsigned int cpuinfo[4] = { 0, 0, 0, 0 }; + _getCpuid(cpuinfo, 0); + for (i = 0; i < 3; i++) { + identifier[i * 2] = cpuinfo[i] & 0xFF; + identifier[i * 2 + 1] = (cpuinfo[i] & 0xFF00) >> 8; + } + return OK; +} + VIRTUALIZATION getVirtualization() { //http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html // -- Gitblit v1.9.1