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 }