Changes to update Tomato RAF.
[tomato.git] / release / src / router / dnscrypt / src / libnacl / cpucycles / sgi.c
blobc0e731f6f604f31209a7673395c75024be3e9be8
1 #include <time.h>
2 #include <stdio.h>
3 #include <unistd.h>
4 #include <sys/time.h>
5 #include <sys/types.h>
6 #include <sys/param.h>
7 #include <sys/sysctl.h>
9 static double cpufrequency = 0;
11 static void init(void)
13 FILE *f;
15 f = popen("hinv -c processor | awk '{if ($3==\"MHZ\") print $2*1000000}'","r");
16 if (!f) return;
17 if (fscanf(f,"%lf",&cpufrequency) < 1) cpufrequency = 0;
18 pclose(f);
19 if (!cpufrequency) return;
22 long long cpucycles_sgi(void)
24 double result;
25 struct timespec t;
26 if (!cpufrequency) init();
27 clock_gettime(CLOCK_SGI_CYCLE,&t);
28 result = t.tv_nsec;
29 result *= 0.000000001;
30 result += (double) t.tv_sec;
31 result *= cpufrequency;
32 return result;
35 long long cpucycles_sgi_persecond(void)
37 if (!cpufrequency) init();
38 return cpufrequency;