diff options
author | Burt P <pburt0@gmail.com> | 2017-05-23 14:30:51 -0500 |
---|---|---|
committer | Leandro A. F. Pereira <leandro@hardinfo.org> | 2017-06-04 16:23:46 -0700 |
commit | 640b0affbefd159e5a6bb30f0a8d55c6f104cc8c (patch) | |
tree | b1d36985020ccd8eb78d211fb9aa3fdd9ca5ce48 /modules | |
parent | c4a8bcdd98b7c9d8af86d6000a898ed3b2a07720 (diff) |
x86: improve processor frequency information
Use /sys/.../cpufreq/ data if available.
Processor max frequency is now used for cpu_mhz.
Signed-off-by: Burt P <pburt0@gmail.com>
Diffstat (limited to 'modules')
-rw-r--r-- | modules/devices/x86/processor.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/modules/devices/x86/processor.c b/modules/devices/x86/processor.c index 04db2423..8c82abbd 100644 --- a/modules/devices/x86/processor.c +++ b/modules/devices/x86/processor.c @@ -237,6 +237,20 @@ int processor_has_flag(gchar * strflags, gchar * strflag) return ret; } +static gint get_cpu_int(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); + ret = atol(tmp1); + + g_free(tmp0); + g_free(tmp1); + return ret; +} + GSList *processor_scan(void) { GSList *procs = NULL; @@ -308,6 +322,13 @@ GSList *processor_scan(void) get_int("stepping", processor->stepping); get_int("processor", processor->id); + + /* freq */ + 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; } g_strfreev(tmp); } @@ -620,6 +641,10 @@ gchar *processor_get_detailed_info(Processor * processor) "Frequency=%.2fMHz\n" "BogoMIPS=%.2f\n" "Byte Order=%s\n" + "[Freq]\n" + "Min=%d kHz\n" + "Max=%d kHz\n" + "Cur=%d kHz\n" "[Features]\n" "Has FPU=%s\n" "[Cache]\n" @@ -643,6 +668,9 @@ gchar *processor_get_detailed_info(Processor * processor) #else "Big Endian", #endif + processor->cpukhz_min, + processor->cpukhz_max, + processor->cpukhz_cur, processor->has_fpu ? processor->has_fpu : "no", cache_info, tmp_pm, tmp_bugs, tmp_flags); |