diff options
| author | Burt P <pburt0@gmail.com> | 2017-07-10 00:12:35 -0500 | 
|---|---|---|
| committer | Leandro Pereira <leandro@hardinfo.org> | 2017-07-12 19:38:41 -0700 | 
| commit | d42ee4cb296043ee763ea93afe16ea534b0d70d0 (patch) | |
| tree | e12404b02615a7f67bc6469e1944681b169a574c /modules/devices/arm | |
| parent | fceafb0ba92b1f8075fe9254db6d2997f18ad8ad (diff) | |
Move common processor stuff into cpu_util.{h,c}
* PROC_CPUINFO define used in testing
* STRIFNULL(), UNKIFNULL() EMPIFNULL() macros used in
  reading cpuinfo
* byte order, topology, and cpufreq data structures and
  functions that are platform independent
* processor_has_flag() helper
Signed-off-by: Burt P <pburt0@gmail.com>
Diffstat (limited to 'modules/devices/arm')
| -rw-r--r-- | modules/devices/arm/processor.c | 106 | 
1 files changed, 9 insertions, 97 deletions
| diff --git a/modules/devices/arm/processor.c b/modules/devices/arm/processor.c index d83be9ec..b1923a74 100644 --- a/modules/devices/arm/processor.c +++ b/modules/devices/arm/processor.c @@ -18,6 +18,7 @@  #include "hardinfo.h"  #include "devices.h" +#include "cpu_util.h"  #include "arm_data.h"  #include "arm_data.c" @@ -34,50 +35,6 @@ static const gchar *arm_mode_str[] = {      "A32 on A64",  }; -static gchar* get_cpu_str(const gchar* file, gint cpuid) { -    gchar *tmp0 = NULL; -    gchar *tmp1 = NULL; -    tmp0 = g_strdup_printf("/sys/devices/system/cpu/cpu%d/%s", cpuid, file); -    g_file_get_contents(tmp0, &tmp1, NULL, NULL); -    g_free(tmp0); -    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; -} - -gchar *byte_order_str() { -#if G_BYTE_ORDER == G_LITTLE_ENDIAN -    return _("Little Endian"); -#else -    return _("Big Endian"); -#endif -} - -int processor_has_flag(gchar * strflags, gchar * strflag) -{ -    gchar **flags; -    gint ret = 0; -    if (strflags == NULL || strflag == NULL) -        return 0; -    flags = g_strsplit(strflags, " ", 0); -    ret = g_strv_contains((const gchar * const *)flags, strflag); -    g_strfreev(flags); -    return ret; -} - -#ifndef PROC_CPUINFO -#define PROC_CPUINFO "/proc/cpuinfo" -#endif -  GSList *  processor_scan(void)  { @@ -182,9 +139,6 @@ processor_scan(void)          processor = (Processor *) pi->data;          /* strings can't be null or segfault later */ -#define STRIFNULL(f,cs) if (processor->f == NULL) processor->f = g_strdup(cs); -#define UNKIFNULL(f) STRIFNULL(f, _("(Unknown)") ) -#define EMPIFNULL(f) STRIFNULL(f, "")          STRIFNULL(model_name, _("ARM Processor") );          EMPIFNULL(flags);          UNKIFNULL(cpu_implementer); @@ -199,23 +153,12 @@ 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); -        if (processor->cpukhz_max) -            processor->cpu_mhz = processor->cpukhz_max / 1000; +        /* topo & freq */ +        processor->cpufreq = cpufreq_new(processor->id); +        processor->cputopo = cputopo_new(processor->id); + +        if (processor->cpufreq->cpukhz_max) +            processor->cpu_mhz = processor->cpufreq->cpukhz_max / 1000;          else              processor->cpu_mhz = 0.0f; @@ -269,39 +212,8 @@ processor_get_detailed_info(Processor *processor)      tmp_part = (char*)arm_part(processor->cpu_implementer, processor->cpu_part);      tmp_arch = (char*)arm_arch_more(processor->cpu_architecture); -    tmp_topology = g_strdup_printf( -                    "[%s]\n" -                    "%s=%d\n" -                    "%s=%s\n" -                    "%s=%s\n", -                   _("Topology"), -                   _("ID"), processor->id, -                   _("Socket"), processor->package_id, -                   _("Core"), processor->core_id); - -    if (processor->cpukhz_min || processor->cpukhz_max || processor->cpukhz_cur) { -        tmp_cpufreq = g_strdup_printf( -                    "[%s]\n" -                    "%s=%d %s\n" -                    "%s=%d %s\n" -                    "%s=%d %s\n" -                    "%s=%d %s\n" -                    "%s=%s\n" -                    "%s=%s\n", -                   _("Frequency Scaling"), -                   _("Minimum"), processor->cpukhz_min, _("kHz"), -                   _("Maximum"), processor->cpukhz_max, _("kHz"), -                   _("Current"), processor->cpukhz_cur, _("kHz"), -                   _("Transition Latency"), processor->transition_latency, _("ns"), -                   _("Governor"), processor->scaling_governor, -                   _("Driver"), processor->scaling_driver); -    } else { -        tmp_cpufreq = g_strdup_printf( -                    "[%s]\n" -                    "%s=%s\n", -                   _("Frequency Scaling"), -                   _("Driver"), processor->scaling_driver); -    } +    tmp_topology = cputopo_section_str(processor->cputopo); +    tmp_cpufreq = cpufreq_section_str(processor->cpufreq);      ret = g_strdup_printf("[%s]\n"                         "%s=%s\n"       /* linux name */ | 
