Changes to update Tomato RAF.
[tomato.git] / release / src / router / dnscrypt / src / libnacl / cpucycles / osfreq.c
blob4e106a23142ab7616d316ad40925e4f98731eade
1 static double osfreq(void)
3 FILE *f;
4 double result;
5 int s;
7 f = fopen("/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq", "r");
8 if (f) {
9 s = fscanf(f,"%lf",&result);
10 fclose(f);
11 if (s > 0) return 1000.0 * result;
14 f = fopen("/sys/devices/system/cpu/cpu0/clock_tick", "r");
15 if (f) {
16 s = fscanf(f,"%lf",&result);
17 fclose(f);
18 if (s > 0) return result;
21 f = fopen("/proc/cpuinfo","r");
22 if (f) {
23 for (;;) {
24 s = fscanf(f,"cpu MHz : %lf",&result);
25 if (s > 0) break;
26 if (s == 0) s = fscanf(f,"%*[^\n]\n");
27 if (s < 0) { result = 0; break; }
29 fclose(f);
30 if (result) return 1000000.0 * result;
33 f = fopen("/proc/cpuinfo","r");
34 if (f) {
35 for (;;) {
36 s = fscanf(f,"clock : %lf",&result);
37 if (s > 0) break;
38 if (s == 0) s = fscanf(f,"%*[^\n]\n");
39 if (s < 0) { result = 0; break; }
41 fclose(f);
42 if (result) return 1000000.0 * result;
45 f = popen("/usr/sbin/lsattr -E -l proc0 -a frequency 2>/dev/null","r");
46 if (f) {
47 s = fscanf(f,"frequency %lf",&result);
48 pclose(f);
49 if (s > 0) return result;
52 f = popen("/usr/sbin/psrinfo -v 2>/dev/null","r");
53 if (f) {
54 for (;;) {
55 s = fscanf(f," The %*s processor operates at %lf MHz",&result);
56 if (s > 0) break;
57 if (s == 0) s = fscanf(f,"%*[^\n]\n");
58 if (s < 0) { result = 0; break; }
60 pclose(f);
61 if (result) return 1000000.0 * result;
64 return 0;