[v5,API-NEXT,10/12] linux-generic: sysinfo: apply per-CPU implementation to MIPS

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

Commit Message

Hongbo Zhang Jan. 18, 2016, 10:10 a.m.
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
MIPS platform.

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

Patch

diff --git a/platform/linux-generic/arch/mips64/odp_sysinfo_parse.c b/platform/linux-generic/arch/mips64/odp_sysinfo_parse.c
index bb1d5d8..88c2066 100644
--- a/platform/linux-generic/arch/mips64/odp_sysinfo_parse.c
+++ b/platform/linux-generic/arch/mips64/odp_sysinfo_parse.c
@@ -14,14 +14,18 @@  int odp_cpuinfo_parser(FILE *file, odp_system_info_t *sysinfo)
 	double mhz = 0.0;
 	int model = 0;
 	int count = 2;
+	int id = 0;
 
 	strcpy(sysinfo->cpu_arch_str, "mips64");
-	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, "BogoMIPS");
 
 			if (pos) {
 				sscanf(pos, "BogoMIPS : %lf", &mhz);
+				/* bogomips seems to be 2x freq */
+				sysinfo->cpu_hz[id] = \
+					(uint64_t)(mhz * 1000000.0 / 2.0);
 				count--;
 			}
 		}
@@ -32,18 +36,22 @@  int odp_cpuinfo_parser(FILE *file, odp_system_info_t *sysinfo)
 			if (pos) {
 				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--;
 			}
 		}
-	}
 
-	/* bogomips seems to be 2x freq */
-	sysinfo->cpu_hz[0] = (uint64_t)(mhz * 1000000.0 / 2.0);
+		if (count == 0) {
+			mhz = 0.0;
+			model = 0;
+			count = 2;
+			id++;
+		}
+	}
 
 	return 0;
 }