From: Hongbo Zhang <hongbo.zh...@linaro.org>

This patch moves the x86 system info codes into the newly added x86
specific platform file.

Signed-off-by: Hongbo Zhang <hongbo.zh...@linaro.org>
---
 platform/linux-generic/Makefile.am                 |  6 +-
 .../linux-generic/arch/x86/odp_sysinfo_parse.c     | 70 ++++++++++++++++++++++
 platform/linux-generic/include/odp_internal.h      |  4 ++
 platform/linux-generic/odp_system_info.c           | 68 +--------------------
 4 files changed, 79 insertions(+), 69 deletions(-)
 create mode 100644 platform/linux-generic/arch/x86/odp_sysinfo_parse.c

diff --git a/platform/linux-generic/Makefile.am 
b/platform/linux-generic/Makefile.am
index 9fbb3bd..de43eff 100644
--- a/platform/linux-generic/Makefile.am
+++ b/platform/linux-generic/Makefile.am
@@ -159,12 +159,14 @@ __LIB__libodp_la_SOURCES = \
                           odp_traffic_mngr.c \
                           odp_version.c \
                           odp_weak.c \
-                          arch/@ARCH@/odp_cpu_arch.c
+                          arch/@ARCH@/odp_cpu_arch.c \
+                          arch/@ARCH@/odp_sysinfo_parse.c
 
 EXTRA_DIST = \
             arch/linux/odp_cpu_arch.c \
             arch/mips64/odp_cpu_arch.c \
-            arch/x86/odp_cpu_arch.c
+            arch/x86/odp_cpu_arch.c \
+            arch/x86/odp_sysinfo_parse.c
 
 if HAVE_PCAP
 __LIB__libodp_la_SOURCES += pktio/pcap.c
diff --git a/platform/linux-generic/arch/x86/odp_sysinfo_parse.c 
b/platform/linux-generic/arch/x86/odp_sysinfo_parse.c
new file mode 100644
index 0000000..85cc34c
--- /dev/null
+++ b/platform/linux-generic/arch/x86/odp_sysinfo_parse.c
@@ -0,0 +1,70 @@
+/* Copyright (c) 2015, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier:     BSD-3-Clause
+ */
+
+#include <odp_internal.h>
+#include <string.h>
+
+int odp_cpuinfo_parser(FILE *file, odp_system_info_t *sysinfo)
+{
+       char str[1024];
+       char *pos;
+       double ghz = 0.0;
+       int id = 0;
+
+       while (fgets(str, sizeof(str), file) != NULL && id < MAX_CPU_NUMBER) {
+               pos = strstr(str, "model name");
+               if (pos) {
+                       pos = strchr(str, ':');
+                       strncpy(sysinfo->model_str[id], pos + 2,
+                               sizeof(sysinfo->model_str[id]));
+
+                       pos = strchr(sysinfo->model_str[id], '@');
+                       *(pos - 1) = '\0';
+                       if (sscanf(pos, "@ %lfGHz", &ghz) == 1)
+                               sysinfo->cpu_hz[id] = (uint64_t)(ghz * 
1000000000.0);
+
+                       id++;
+               }
+       }
+
+       return 0;
+}
+
+uint64_t odp_cpu_hz_current(int id)
+{
+       char str[1024];
+       FILE *file;
+       int cpu;
+       char *pos;
+       double mhz = 0.0;
+
+       file = fopen("/proc/cpuinfo", "rt");
+
+       /* find the correct processor instance */
+       while (fgets(str, sizeof(str), file) != NULL) {
+               pos = strstr(str, "processor");
+               if (pos) {
+                       if (sscanf(pos, "processor : %d", &cpu) == 1)
+                               if (cpu == id)
+                                       break;
+               }
+       }
+
+       /* extract the cpu current speed */
+       while (fgets(str, sizeof(str), file) != NULL) {
+               pos = strstr(str, "cpu MHz");
+               if (pos) {
+                       if (sscanf(pos, "cpu MHz : %lf", &mhz) == 1)
+                               break;
+               }
+       }
+
+       fclose(file);
+       if (mhz)
+               return (uint64_t)(mhz * 1000000.0);
+
+       return -1;
+}
diff --git a/platform/linux-generic/include/odp_internal.h 
b/platform/linux-generic/include/odp_internal.h
index 2eeba42..d3cde5f 100644
--- a/platform/linux-generic/include/odp_internal.h
+++ b/platform/linux-generic/include/odp_internal.h
@@ -20,6 +20,7 @@ extern "C" {
 
 #include <odp/init.h>
 #include <odp/thread.h>
+#include <stdio.h>
 
 extern __thread int __odp_errno;
 
@@ -86,6 +87,9 @@ int odp_tm_init_global(void);
 
 void _odp_flush_caches(void);
 
+int odp_cpuinfo_parser(FILE *file, odp_system_info_t *sysinfo);
+uint64_t odp_cpu_hz_current(int id);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/platform/linux-generic/odp_system_info.c 
b/platform/linux-generic/odp_system_info.c
index 449e500..4824d55 100644
--- a/platform/linux-generic/odp_system_info.c
+++ b/platform/linux-generic/odp_system_info.c
@@ -108,71 +108,7 @@ static int huge_page_size(void)
 /*
  * HW specific /proc/cpuinfo file parsing
  */
-#if defined __x86_64__ || defined __i386__
-
-static int odp_cpuinfo_parser(FILE *file, odp_system_info_t *sysinfo)
-{
-       char str[1024];
-       char *pos;
-       double ghz = 0.0;
-       int id = 0;
-
-       while (fgets(str, sizeof(str), file) != NULL && id < MAX_CPU_NUMBER) {
-               pos = strstr(str, "model name");
-               if (pos) {
-                       pos = strchr(str, ':');
-                       strncpy(sysinfo->model_str[id], pos + 2,
-                               sizeof(sysinfo->model_str[id]));
-
-                       pos = strchr(sysinfo->model_str[id], '@');
-                       *(pos - 1) = '\0';
-                       if (sscanf(pos, "@ %lfGHz", &ghz) == 1)
-                               sysinfo->cpu_hz[id] = (uint64_t)(ghz * 
1000000000.0);
-
-                       id++;
-               }
-       }
-
-       return 0;
-}
-
-static uint64_t odp_cpu_hz_current(int id)
-{
-       char str[1024];
-       FILE *file;
-       int cpu;
-       char *pos;
-       double mhz = 0.0;
-
-       file = fopen("/proc/cpuinfo", "rt");
-
-       /* find the correct processor instance */
-       while (fgets(str, sizeof(str), file) != NULL) {
-               pos = strstr(str, "processor");
-               if (pos) {
-                       if (sscanf(pos, "processor : %d", &cpu) == 1)
-                               if (cpu == id)
-                                       break;
-               }
-       }
-
-       /* extract the cpu current speed */
-       while (fgets(str, sizeof(str), file) != NULL) {
-               pos = strstr(str, "cpu MHz");
-               if (pos) {
-                       if (sscanf(pos, "cpu MHz : %lf", &mhz) == 1)
-                               break;
-               }
-       }
-
-       fclose(file);
-       if (mhz)
-               return (uint64_t)(mhz * 1000000.0);
-
-       return -1;
-}
-
-#elif defined __arm__ || defined __aarch64__
+#if defined __arm__ || defined __aarch64__
 
 static int odp_cpuinfo_parser(FILE *file ODP_UNUSED,
 odp_system_info_t *sysinfo ODP_UNUSED)
@@ -278,8 +214,6 @@ static uint64_t odp_cpu_hz_current(int id ODP_UNUSED)
        return -1;
 }
 
-#else
-       #error GCC target not found
 #endif
 
 
-- 
2.1.4

_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to