From: Hongbo Zhang <[email protected]> This patch adds a new API odp_cpu_hz_max() to get the max frequency of the CPU on which the progeress is running. The previous odp_cpu_hz() should return the current frequency and will be adapted later.
Signed-off-by: Hongbo Zhang <[email protected]> --- include/odp/api/cpu.h | 9 +++++++++ platform/linux-generic/odp_system_info.c | 25 +++++++++++-------------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/include/odp/api/cpu.h b/include/odp/api/cpu.h index 55f5d23..93d3e7f 100644 --- a/include/odp/api/cpu.h +++ b/include/odp/api/cpu.h @@ -73,6 +73,15 @@ const char *odp_cpu_model_str_id(int id); uint64_t odp_cpu_hz(void); /** + * Maximum CPU frequency in Hz + * + * Returns maximum frequency of this CPU + * + * @return CPU frequency in Hz + */ +uint64_t odp_cpu_hz_max(void); + +/** * @} */ diff --git a/platform/linux-generic/odp_system_info.c b/platform/linux-generic/odp_system_info.c index ea1f337..43bfcc0 100644 --- a/platform/linux-generic/odp_system_info.c +++ b/platform/linux-generic/odp_system_info.c @@ -121,35 +121,27 @@ static int cpuinfo_x86(FILE *file, odp_system_info_t *sysinfo) { char str[1024]; char *pos; - double mhz = 0.0; + double ghz = 0.0; int model = 0; - int count = 2; + int count = 1; while (fgets(str, sizeof(str), file) != NULL && count > 0) { - if (!mhz) { - pos = strstr(str, "cpu MHz"); - if (pos) { - sscanf(pos, "cpu MHz : %lf", &mhz); - count--; - } - } - if (!model) { pos = strstr(str, "model name"); 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; + pos = strchr(sysinfo->model_str[0], '@'); + *(pos - 1) = '\0'; + sscanf(pos, "@ %lfGHz", &ghz); model = 1; count--; } } } - sysinfo->cpu_hz[0] = (uint64_t)(mhz * 1000000.0); + sysinfo->cpu_hz[0] = (uint64_t)(ghz * 1000000000.0); return 0; } @@ -379,6 +371,11 @@ uint64_t odp_cpu_hz(void) return odp_global_data.system_info.cpu_hz[0]; } +uint64_t odp_cpu_hz_max(void) +{ + return odp_global_data.system_info.cpu_hz[0]; +} + uint64_t odp_sys_huge_page_size(void) { return odp_global_data.system_info.huge_page_size; -- 1.9.1 _______________________________________________ lng-odp mailing list [email protected] https://lists.linaro.org/mailman/listinfo/lng-odp
