diff options
author | Waley Chen <waleycz@gmail.com> | 2016-02-25 18:09:15 -0500 |
---|---|---|
committer | Waley Chen <waleycz@gmail.com> | 2016-02-26 16:58:34 -0500 |
commit | 7f7a64a1d6ef791d3b111245301d73902e9e4875 (patch) | |
tree | 37685005da6ebc7afb34eb5253aa5823a2ef41fd /src/mongo/util/processinfo_windows.cpp | |
parent | 6e95475c55642d97e316467fa2adeb38edc6d762 (diff) | |
download | mongo-7f7a64a1d6ef791d3b111245301d73902e9e4875.tar.gz |
SERVER-22398 Add SystemInfo::numAvailableCores
Diffstat (limited to 'src/mongo/util/processinfo_windows.cpp')
-rw-r--r-- | src/mongo/util/processinfo_windows.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/mongo/util/processinfo_windows.cpp b/src/mongo/util/processinfo_windows.cpp index 224cd5a896a..e39fa6778da 100644 --- a/src/mongo/util/processinfo_windows.cpp +++ b/src/mongo/util/processinfo_windows.cpp @@ -31,6 +31,9 @@ #include "mongo/platform/basic.h" +#include <bitset> +#include <boost/none.hpp> +#include <boost/optional.hpp> #include <iostream> #include <psapi.h> @@ -73,6 +76,18 @@ ProcessInfo::ProcessInfo(ProcessId pid) {} ProcessInfo::~ProcessInfo() {} +// get the number of CPUs available to the current process +boost::optional<unsigned long> ProcessInfo::getNumAvailableCores() { + DWORD_PTR process_mask, system_mask; + + if (GetProcessAffinityMask(GetCurrentProcess(), &process_mask, &system_mask)) { + std::bitset<32> mask(process_mask); + if (mask.count() > 0) + return mask.count(); + } + return boost::none; +} + bool ProcessInfo::supported() { return true; } |