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); | 
