X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fpbd%2Fcpus.cc;h=fed7725b766d819f33aef2148e3030edbc25a9db;hb=bf2d9e7a342dbb4d06b258e9d22cc4915260914c;hp=48b919cd966fb55b7da9eaad7c061b15930bba16;hpb=eb5096bfc7945cb30abb35ae2e1320e687966f89;p=ardour.git diff --git a/libs/pbd/cpus.cc b/libs/pbd/cpus.cc index 48b919cd96..fed7725b76 100644 --- a/libs/pbd/cpus.cc +++ b/libs/pbd/cpus.cc @@ -22,29 +22,51 @@ #include "libpbd-config.h" #endif +#include + #ifdef __linux__ #include #elif defined(__APPLE__) || defined(__FreeBSD__) #include #include #include +#elif defined(PLATFORM_WINDOWS) +#include #endif #include "pbd/cpus.h" +#if defined(COMPILER_MSVC) && !defined(PTW32_VERSION) +#include // Gets us 'PTW32_VERSION' +#endif + uint32_t hardware_concurrency() { + if (getenv("CONCURRENCY")) { + int c = atoi (getenv("CONCURRENCY")); + if (c > 0) { + return c; + } + } #if defined(PTW32_VERSION) || defined(__hpux) - return pthread_num_processors_np(); -#elif defined(__APPLE__) || defined(__FreeBSD__) - int count; - size_t size=sizeof(count); - return sysctlbyname("hw.physicalcpu",&count,&size,NULL,0)?0:count; + return pthread_num_processors_np(); +#elif defined(__APPLE__) + int count; + size_t size=sizeof(count); + return sysctlbyname("hw.physicalcpu",&count,&size,NULL,0)?0:count; +#elif defined(__FreeBSD__) + int count; + size_t size=sizeof(count); + return sysctlbyname("hw.ncpu",&count,&size,NULL,0)?0:count; #elif defined(HAVE_UNISTD) && defined(_SC_NPROCESSORS_ONLN) - int const count=sysconf(_SC_NPROCESSORS_ONLN); - return (count>0)?count:0; + int const count=sysconf(_SC_NPROCESSORS_ONLN); + return (count>0)?count:0; +#elif defined(PLATFORM_WINDOWS) + SYSTEM_INFO sys_info; + GetSystemInfo( &sys_info ); + return sys_info.dwNumberOfProcessors; #else - return 0; + return 0; #endif }