diff mbox

[v5,API-NEXT,04/12] linux-generic: sysinfo: move x86 system info codes to its plarform file

Message ID 1453111808-15762-5-git-send-email-hongbo.zhang@linaro.org
State Superseded
Headers show

Commit Message

Hongbo Zhang Jan. 18, 2016, 10:10 a.m. UTC
From: Hongbo Zhang <hongbo.zhang@linaro.org>

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

Signed-off-by: Hongbo Zhang <hongbo.zhang@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

Comments

Maxim Uvarov Jan. 18, 2016, 12:29 p.m. UTC | #1
WARNING: line over 80 characters
#73: FILE: platform/linux-generic/arch/x86/odp_sysinfo_parse.c:27:
+                sysinfo->cpu_hz[id] = (uint64_t)(ghz * 1000000000.0);


On 01/18/2016 13:10, hongbo.zhang@linaro.org wrote:
> From: Hongbo Zhang <hongbo.zhang@linaro.org>
>
> This patch moves the x86 system info codes into the newly added x86
> specific platform file.
>
> Signed-off-by: Hongbo Zhang <hongbo.zhang@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
>   
>
diff mbox

Patch

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