diff options
author | Burt P <pburt0@gmail.com> | 2017-06-22 16:25:33 -0500 |
---|---|---|
committer | Leandro A. F. Pereira <leandro@hardinfo.org> | 2017-06-22 16:05:03 -0700 |
commit | 343737985d8c66aba55d5e501a02b44d77133b70 (patch) | |
tree | f9ac2287386862c3049361754e7558b876dc691b /modules/devices/arm/processor.c | |
parent | 008c7e1322d3135fbe7a42d4c38c751cd2fb1cd7 (diff) |
ARM: add socket/core and more cpufreq information
Signed-off-by: Burt P <pburt0@gmail.com>
Diffstat (limited to 'modules/devices/arm/processor.c')
-rw-r--r-- | modules/devices/arm/processor.c | 42 |
1 files changed, 36 insertions, 6 deletions
diff --git a/modules/devices/arm/processor.c b/modules/devices/arm/processor.c index ad7adf7f..51fd8fc7 100644 --- a/modules/devices/arm/processor.c +++ b/modules/devices/arm/processor.c @@ -34,17 +34,23 @@ static const gchar *arm_mode_str[] = { "A32 on A64", }; -static gint get_cpu_int(const gchar* file, gint cpuid) { +static gchar* get_cpu_str(const gchar* file, gint cpuid) { gchar *tmp0 = NULL; gchar *tmp1 = NULL; - gint ret = 0; - tmp0 = g_strdup_printf("/sys/devices/system/cpu/cpu%d/%s", cpuid, file); g_file_get_contents(tmp0, &tmp1, NULL, NULL); - if (tmp1) - ret = atol(tmp1); g_free(tmp0); - g_free(tmp1); + return tmp1; +} + +static gint get_cpu_int(const char* item, int cpuid) { + gchar *fc = NULL; + int ret = 0; + fc = get_cpu_str(item, cpuid); + if (fc) { + ret = atol(fc); + g_free(fc); + } return ret; } @@ -183,7 +189,18 @@ processor_scan(void) processor->cpu_architecture, processor->model_name); UNKIFNULL(decoded_name); + /* topo */ + processor->package_id = get_cpu_str("topology/physical_package_id", processor->id); + processor->core_id = get_cpu_str("topology/core_id", processor->id); + UNKIFNULL(package_id); + UNKIFNULL(core_id); + /* freq */ + processor->scaling_driver = get_cpu_str("cpufreq/scaling_driver", processor->id); + processor->scaling_governor = get_cpu_str("cpufreq/scaling_governor", processor->id); + UNKIFNULL(scaling_driver); + UNKIFNULL(scaling_governor); + processor->transition_latency = get_cpu_int("cpufreq/cpuinfo_transition_latency", processor->id); processor->cpukhz_cur = get_cpu_int("cpufreq/scaling_cur_freq", processor->id); processor->cpukhz_min = get_cpu_int("cpufreq/scaling_min_freq", processor->id); processor->cpukhz_max = get_cpu_int("cpufreq/scaling_max_freq", processor->id); @@ -254,10 +271,17 @@ processor_get_detailed_info(Processor *processor) "Big Endian" #endif "\n" + "[Topology]\n" + "ID=%d\n" + "Socket=%s\n" + "Core=%s\n" "[Frequency Scaling]\n" "Minimum=%d kHz\n" "Maximum=%d kHz\n" "Current=%d kHz\n" + "Transition Latency=%d ns\n" + "Governor=%s\n" + "Driver=%s\n" "[ARM]\n" "Implementer=[%s] %s\n" "Part=[%s] %s\n" @@ -271,9 +295,15 @@ processor_get_detailed_info(Processor *processor) processor->decoded_name, arm_mode_str[processor->mode], processor->bogomips, + processor->id, + processor->package_id, + processor->core_id, processor->cpukhz_min, processor->cpukhz_max, processor->cpukhz_cur, + processor->transition_latency, + processor->scaling_governor, + processor->scaling_driver, processor->cpu_implementer, (tmp_imp) ? tmp_imp : "", processor->cpu_part, (tmp_part) ? tmp_part : "", processor->cpu_architecture, (tmp_arch) ? tmp_arch : "", |