diff mbox

[v8,API-NEXT,11/12] linux-generic: sysinfo: apply per-CPU implementation to PowerPC

Message ID 1453884974-24724-12-git-send-email-hongbo.zhang@linaro.org
State Accepted
Commit 9ecb329808e80963c04b943646df8e74a1438623
Headers show

Commit Message

Hongbo Zhang Jan. 27, 2016, 8:56 a.m. UTC
From: Hongbo Zhang <hongbo.zhang@linaro.org>

When per-CPU framework was introduced, it was only implemented on x86,
for other platforms, only the model_str[0] and cpu_hz[0] are set to pass
compile, this patch set all values for model_str[] and cpu_hz[] on the
PowerPC platform.

Signed-off-by: Hongbo Zhang <hongbo.zhang@linaro.org>
---
 .../linux-generic/arch/powerpc/odp_sysinfo_parse.c | 24 +++++++++++++++-------
 1 file changed, 17 insertions(+), 7 deletions(-)
diff mbox

Patch

diff --git a/platform/linux-generic/arch/powerpc/odp_sysinfo_parse.c b/platform/linux-generic/arch/powerpc/odp_sysinfo_parse.c
index 1ed95ad..62c3ae3 100644
--- a/platform/linux-generic/arch/powerpc/odp_sysinfo_parse.c
+++ b/platform/linux-generic/arch/powerpc/odp_sysinfo_parse.c
@@ -12,17 +12,22 @@  int odp_cpuinfo_parser(FILE *file, odp_system_info_t *sysinfo)
 	char str[1024];
 	char *pos;
 	double mhz = 0.0;
+	uint64_t hz;
 	int model = 0;
 	int count = 2;
+	int id = 0;
 
 	strcpy(sysinfo->cpu_arch_str, "powerpc");
-	while (fgets(str, sizeof(str), file) != NULL && count > 0) {
+	while (fgets(str, sizeof(str), file) != NULL && id < MAX_CPU_NUMBER) {
 		if (!mhz) {
 			pos = strstr(str, "clock");
 
 			if (pos)
-				if (sscanf(pos, "clock : %lf", &mhz) == 1)
+				if (sscanf(pos, "clock : %lf", &mhz) == 1) {
+					hz = (uint64_t)(mhz * 1000000.0);
+					sysinfo->cpu_hz[id] = hz;
 					count--;
+				}
 		}
 
 		if (!model) {
@@ -32,16 +37,21 @@  int odp_cpuinfo_parser(FILE *file, odp_system_info_t *sysinfo)
 				int len;
 
 				pos = strchr(str, ':');
-				strncpy(sysinfo->model_str[0], pos + 2,
-					sizeof(sysinfo->model_str[0]));
-				len = strlen(sysinfo->model_str[0]);
-				sysinfo->model_str[0][len - 1] = 0;
+				strncpy(sysinfo->model_str[id], pos + 2,
+					sizeof(sysinfo->model_str[id]));
+				len = strlen(sysinfo->model_str[id]);
+				sysinfo->model_str[id][len - 1] = 0;
 				model = 1;
 				count--;
 			}
 		}
 
-		sysinfo->cpu_hz[0] = (uint64_t)(mhz * 1000000.0);
+		if (count == 0) {
+			mhz = 0.0;
+			model = 0;
+			count = 2;
+			id++;
+		}
 	}
 
 	return 0;