#include "precompiled.h" #include "ucpu.h" #if OS_MACOSX #include #endif int ucpu_IsThrottlingPossible() { return -1; // don't know } int ucpu_NumPackages() { #if OS_MACOSX int mib[]={CTL_HW, HW_NCPU}; int ncpus; size_t len = sizeof(ncpus); if (sysctl(mib, 2, &ncpus, &len, NULL, 0) == -1) return -1; // don't know else return ncpus; #else long res = sysconf(_SC_NPROCESSORS_CONF); if (res == -1) return 1; else return (int)res; #endif } double ucpu_ClockFrequency() { return -1; // don't know } // apparently not possible on non-Windows OSes because they seem to lack // a CPU affinity API. see sysdep.h comment. LibError ucpu_CallByEachCPU(CpuCallback cb, void* param) { UNUSED2(cb); /* cpu_set_t currentCPU; while ( j < sysNumProcs ) { CPU_ZERO(¤tCPU); CPU_SET(j, ¤tCPU); if ( sched_setaffinity (0, sizeof (currentCPU), ¤tCPU) == 0 ) { sleep(0); // Ensure system to switch to the right */ return ERR::NO_SYS; }