summaryrefslogtreecommitdiff
path: root/includes/cpu_util.h
blob: da581a786c98b12b6a56cade756ef464b6bf28ac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#ifndef __CPU_UTIL_H__
#define __CPU_UTIL_H__

#include "hardinfo.h"

#ifndef PROC_CPUINFO
#define PROC_CPUINFO "/proc/cpuinfo"
#endif

#define STRIFNULL(f,cs) if (f == NULL) f = g_strdup(cs);
#define UNKIFNULL(f) STRIFNULL(f, _("(Unknown)") )
#define EMPIFNULL(f) STRIFNULL(f, "")

const 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, int null_val);

/* 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;
    gint book_id;
    gint drawer_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