1 static double osfreq(void)
7 f
= fopen("/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq", "r");
9 s
= fscanf(f
,"%lf",&result
);
11 if (s
> 0) return 1000.0 * result
;
14 f
= fopen("/sys/devices/system/cpu/cpu0/clock_tick", "r");
16 s
= fscanf(f
,"%lf",&result
);
18 if (s
> 0) return result
;
21 f
= fopen("/proc/cpuinfo","r");
24 s
= fscanf(f
,"cpu MHz : %lf",&result
);
26 if (s
== 0) s
= fscanf(f
,"%*[^\n]\n");
27 if (s
< 0) { result
= 0; break; }
30 if (result
) return 1000000.0 * result
;
33 f
= fopen("/proc/cpuinfo","r");
36 s
= fscanf(f
,"clock : %lf",&result
);
38 if (s
== 0) s
= fscanf(f
,"%*[^\n]\n");
39 if (s
< 0) { result
= 0; break; }
42 if (result
) return 1000000.0 * result
;
45 f
= popen("/usr/sbin/lsattr -E -l proc0 -a frequency 2>/dev/null","r");
47 s
= fscanf(f
,"frequency %lf",&result
);
49 if (s
> 0) return result
;
52 f
= popen("/usr/sbin/psrinfo -v 2>/dev/null","r");
55 s
= fscanf(f
," The %*s processor operates at %lf MHz",&result
);
57 if (s
== 0) s
= fscanf(f
,"%*[^\n]\n");
58 if (s
< 0) { result
= 0; break; }
61 if (result
) return 1000000.0 * result
;