From 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c Mon Sep 17 00:00:00 2001 From: Lorry Tar Creator Date: Tue, 27 Jun 2017 06:07:23 +0000 Subject: webkitgtk-2.16.5 --- Source/WTF/wtf/NumberOfCores.cpp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'Source/WTF/wtf/NumberOfCores.cpp') diff --git a/Source/WTF/wtf/NumberOfCores.cpp b/Source/WTF/wtf/NumberOfCores.cpp index 75d8af70f..ea5f825dc 100644 --- a/Source/WTF/wtf/NumberOfCores.cpp +++ b/Source/WTF/wtf/NumberOfCores.cpp @@ -26,13 +26,15 @@ #include "config.h" #include "NumberOfCores.h" -#if OS(DARWIN) || OS(OPENBSD) || OS(NETBSD) || OS(FREEBSD) +#include + +#if OS(DARWIN) #include // sys/types.h must come before sys/sysctl.h because the latter uses // data types defined in the former. See sysctl(3) and style(9). #include #include -#elif OS(LINUX) || OS(AIX) || OS(SOLARIS) +#elif OS(LINUX) || OS(AIX) || OS(SOLARIS) || OS(OPENBSD) || OS(NETBSD) || OS(FREEBSD) #include #elif OS(WINDOWS) #include @@ -47,18 +49,27 @@ int numberOfProcessorCores() if (s_numberOfCores > 0) return s_numberOfCores; + + if (const char* coresEnv = getenv("WTF_numberOfProcessorCores")) { + unsigned numberOfCores; + if (sscanf(coresEnv, "%u", &numberOfCores) == 1) { + s_numberOfCores = numberOfCores; + return s_numberOfCores; + } else + fprintf(stderr, "WARNING: failed to parse WTF_numberOfProcessorCores=%s\n", coresEnv); + } -#if OS(DARWIN) || OS(OPENBSD) || OS(NETBSD) || OS(FREEBSD) +#if OS(DARWIN) unsigned result; size_t length = sizeof(result); int name[] = { CTL_HW, - HW_NCPU + HW_AVAILCPU }; int sysctlResult = sysctl(name, sizeof(name) / sizeof(int), &result, &length, 0, 0); s_numberOfCores = sysctlResult < 0 ? defaultIfUnavailable : result; -#elif OS(LINUX) || OS(AIX) || OS(SOLARIS) +#elif OS(LINUX) || OS(AIX) || OS(SOLARIS) || OS(OPENBSD) || OS(NETBSD) || OS(FREEBSD) long sysconfResult = sysconf(_SC_NPROCESSORS_ONLN); s_numberOfCores = sysconfResult < 0 ? defaultIfUnavailable : static_cast(sysconfResult); -- cgit v1.2.1