Browse Source

cpuid: use a sprintf-like function to get cputype as a string

Signed-off-by: Ahmed Samy <f.fallen45@gmail.com>
Ahmed Samy 12 years ago
parent
commit
0cfb63013b
3 changed files with 17 additions and 8 deletions
  1. 7 2
      ccan/cpuid/cpuid.c
  2. 7 5
      ccan/cpuid/cpuid.h
  3. 3 1
      ccan/cpuid/test/run.c

+ 7 - 2
ccan/cpuid/cpuid.c

@@ -220,9 +220,14 @@ cputype_t cpuid_get_cpu_type(void)
 	return cputype;
 }
 
-const char *cpuid_get_cpu_type_string(const cputype_t cputype)
+bool cpuid_sprintf_cputype(const cputype_t cputype, char *buf)
 {
-	return cpuids[(int)cputype];
+	if (cputype == CT_NONE)
+		return false;
+
+	memcpy(buf, cpuids[(int)cputype], 12);
+	buf[12] = '\0';
+	return true;
 }
 
 uint32_t cpuid_highest_ext_func_supported(void)

+ 7 - 5
ccan/cpuid/cpuid.h

@@ -26,7 +26,7 @@
 #include <stdint.h>
 
 /**
- * enum cpuid - stuff to get information on from the CPU.
+ * enum cpuid - stuff to get information about from the CPU.
  *
  * This is used as a parameter in cpuid().
  *
@@ -124,14 +124,17 @@ typedef enum cputype {
  *
  * See also: cpuid_get_cpu_type_string()
  */
+#define is_intel_cpu() 	cpuid_get_cpu_type() == CT_INTEL
+#define is_amd_cpu() 	cpuid_get_cpu_type() == CT_AMDK5 || cpuid_get_cpu_type() == CT_AMD
 cputype_t cpuid_get_cpu_type(void);
 
 /**
- * cpuid_get_cpu_type_string - Get CPU Type string
+ * cpuid_sprintf_cputype - Get CPU Type string
+ * @cputype: a char of atleast 12 bytes in it.
  *
- * Returns the CPU type string based off cputype_t.
+ * Returns true on success, false on failure
  */
-const char *cpuid_get_cpu_type_string(const cputype_t cputype);
+bool cpuid_sprintf_cputype(const cputype_t cputype, char *buf);
 
 /**
  * cpuid_is_supported - test if the CPUID instruction is supported
@@ -275,4 +278,3 @@ bool cpuid_has_feature(int feature, bool extended);
 
 #endif
 #endif
-

+ 3 - 1
ccan/cpuid/test/run.c

@@ -10,7 +10,9 @@ int main(void)
 		return 1;
 	}
 
-	printf ("Vendor ID: %s\n", cpuid_get_cpu_type_string (cpuid_get_cpu_type ()));
+	char cputype[12];
+	if (cpuid_sprintf_cputype(cpuid_get_cpu_type(), cputype))
+		printf ("Vendor ID: %s\n", cputype);
 
 	char buf[48];
 	cpuid(CPU_PROC_BRAND_STRING, (uint32_t *)buf);