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