cpuid: use a sprintf-like function to get cputype as a string
authorAhmed Samy <f.fallen45@gmail.com>
Wed, 23 Oct 2013 15:39:25 +0000 (17:39 +0200)
committerAhmed Samy <f.fallen45@gmail.com>
Wed, 23 Oct 2013 15:39:25 +0000 (17:39 +0200)
Signed-off-by: Ahmed Samy <f.fallen45@gmail.com>
ccan/cpuid/cpuid.c
ccan/cpuid/cpuid.h
ccan/cpuid/test/run.c

index 5c3aa34815b21a7c8140a52820d529f6bc99a5c6..026875dcae86b3188115b5fc3513e6a78dfbf6ff 100644 (file)
@@ -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)
index ee61da85d5035de4556a43fcf08254929fdf2f43..7bf903a6db397af69c454cd20eab3a061d1b084a 100644 (file)
@@ -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
-
index 88c241a196ff33398c7424e9956463de605384c6..843389fa2a7733178b4399bfb6d6fe3e2c07dd5d 100644 (file)
@@ -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);