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 /includes/cpu_util.h | |
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 'includes/cpu_util.h')
-rw-r--r-- | includes/cpu_util.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/includes/cpu_util.h b/includes/cpu_util.h new file mode 100644 index 00000000..656a402c --- /dev/null +++ b/includes/cpu_util.h @@ -0,0 +1,48 @@ +#ifndef __CPU_UTIL_H__ +#define __CPU_UTIL_H__ + +#include "hardinfo.h" + +#ifndef PROC_CPUINFO +#define PROC_CPUINFO "/proc/cpuinfo" +#endif + +/* needs a local Processor *processor */ +#define STRIFNULL(f,cs) if (processor->f == NULL) processor->f = g_strdup(cs); +#define UNKIFNULL(f) STRIFNULL(f, _("(Unknown)") ) +#define EMPIFNULL(f) STRIFNULL(f, "") + +gchar *byte_order_str(void); + +/* from /sys/devices/system/cpu/cpu%d/%s */ +gchar* get_cpu_str(const gchar* file, gint cpuid); +gint get_cpu_int(const char* item, int cpuid); + +/* space delimted list of flags, finds flag */ +int processor_has_flag(gchar * strflags, gchar * strflag); + +typedef struct { + gint id; + gint cpukhz_max, cpukhz_min, cpukhz_cur; + gchar *scaling_driver, *scaling_governor; + gint transition_latency; +} cpufreq_data; + +typedef struct { + gint id; /* thread */ + gint socket_id; + gint core_id; +} cpu_topology_data; + +cpufreq_data *cpufreq_new(gint id); +void cpufreq_update(cpufreq_data *cpufd, int cur_only); +void cpufreq_free(cpufreq_data *cpufd); + +gchar *cpufreq_section_str(cpufreq_data *cpufd); + +cpu_topology_data *cputopo_new(gint id); +void cputopo_free(cpu_topology_data *cputd); + +gchar *cputopo_section_str(cpu_topology_data *cputd); + +#endif |