libzahl

big integer library
git clone git://git.suckless.org/libzahl
Log | Files | Refs | README | LICENSE

util.c (798B)


      1 #define COMPILING_UTIL_C
      2 #include "util.h"
      3 
      4 
      5 char timebuf[512];
      6 unsigned long long int freq;
      7 
      8 
      9 void
     10 benchmark_init(void)
     11 {
     12 #if defined(__linux__) && defined(USE_RDTSC)
     13 	cpu_set_t cpuset;
     14 	FILE *f;
     15 	char *line = 0;
     16 	size_t size = 0;
     17 	char path[PATH_MAX];
     18 	CPU_ZERO(&cpuset);
     19 	CPU_SET(USE_CPU, &cpuset);
     20 	sched_setaffinity(getpid(), sizeof(cpuset), &cpuset);
     21 	sprintf(path, "/sys/devices/system/cpu/cpu%i/cpufreq/cpuinfo_max_freq", USE_CPU);
     22 	f = fopen(path, "r");
     23 	if (getline(&line, &size, f) < 0)
     24 		abort();
     25 	fclose(f);
     26 	freq = strtoull(line, 0, 10);
     27 	free(line);
     28 
     29 #elif defined(__linux__)
     30 	cpu_set_t cpuset;
     31 	CPU_ZERO(&cpuset);
     32 	CPU_SET(USE_CPU, &cpuset);
     33 	sched_setaffinity(getpid(), sizeof(cpuset), &cpuset);
     34 
     35 #else
     36 	fprintf(stderr, "WARNING: Don't know how to set CPU affinity.\n");
     37 
     38 #endif
     39 }