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 | |
| 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')
| -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 : "", | 
