From 27e3f57da2dc0109e96bab50a72e331e4c67f34b Mon Sep 17 00:00:00 2001 From: Dmitry Marakasov Date: Tue, 10 Dec 2019 15:08:25 +0300 Subject: [PATCH] Add FreeBSD-specific code bits for pthread_setaffinity_np support --- src/OpenThreads/pthreads/CMakeLists.txt | 7 +++++++ src/OpenThreads/pthreads/PThread.cpp | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/src/OpenThreads/pthreads/CMakeLists.txt b/src/OpenThreads/pthreads/CMakeLists.txt index 1a3e96a9b..e18969c74 100644 --- a/src/OpenThreads/pthreads/CMakeLists.txt +++ b/src/OpenThreads/pthreads/CMakeLists.txt @@ -80,8 +80,15 @@ ELSE() # double check that pthread_setaffinity_np is available as FreeBSD header doesn't contain required function CHECK_CXX_SOURCE_COMPILES(" #include + #ifdef __FreeBSD__ + #include + #endif int main() { + #ifdef __FreeBSD__ + cpuset_t cpumask; + #else cpu_set_t cpumask; + #endif CPU_ZERO( &cpumask ); CPU_SET( 0, &cpumask ); pthread_setaffinity_np( pthread_self(), sizeof(cpumask), &cpumask); diff --git a/src/OpenThreads/pthreads/PThread.cpp b/src/OpenThreads/pthreads/PThread.cpp index 4b1bf4a0b..06762af22 100644 --- a/src/OpenThreads/pthreads/PThread.cpp +++ b/src/OpenThreads/pthreads/PThread.cpp @@ -21,6 +21,9 @@ #include #include #include +#if defined(HAVE_PTHREAD_SETAFFINITY_NP) && defined(__FreeBSD__) + #include +#endif #include #if defined __linux__ || defined __sun || defined __APPLE__ || ANDROID @@ -113,7 +116,11 @@ namespace OpenThreads static void setAffinity(const Affinity& affinity) { //std::cout<<"setProcessAffinity : "<< affinity.activeCPUs.size() <