0ad/source/lib/sysdep/unix/ucpu.cpp

67 lines
1.0 KiB
C++
Raw Normal View History

#include "precompiled.h"
#include "ucpu.h"
#if OS_MACOSX
#include <sys/sysctl.h>
#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(&currentCPU);
CPU_SET(j, &currentCPU);
if ( sched_setaffinity (0, sizeof (currentCPU), &currentCPU)
== 0 )
{
sleep(0); // Ensure system to switch to the right
*/
return ERR::NO_SYS;
}