X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/7fbfcbe2a711aefb3bc5c043cdef4ce714784c47..3f751bc729c137138174208b9b296879c9b43807:/src/include/xbt/parmap.hpp diff --git a/src/include/xbt/parmap.hpp b/src/include/xbt/parmap.hpp index e28e78af61..b82c126914 100644 --- a/src/include/xbt/parmap.hpp +++ b/src/include/xbt/parmap.hpp @@ -22,6 +22,10 @@ #include #endif +#if HAVE_PTHREAD_NP_H +#include +#endif + XBT_LOG_EXTERNAL_CATEGORY(xbt_parmap); namespace simgrid { @@ -172,11 +176,17 @@ template Parmap::Parmap(unsigned num_workers, e_xbt_parmap_mode_ /* Bind the worker to a core if possible */ #if HAVE_PTHREAD_SETAFFINITY - pthread_t pthread = this->workers[i]->native_handle(); +#if HAVE_PTHREAD_NP_H /* FreeBSD ? */ + cpuset_t cpuset; + size_t size = sizeof(cpuset_t); +#else /* Linux ? */ cpu_set_t cpuset; + size_t size = sizeof(cpu_set_t); +#endif + pthread_t pthread = this->workers[i]->native_handle(); CPU_ZERO(&cpuset); CPU_SET(core_bind, &cpuset); - pthread_setaffinity_np(pthread, sizeof(cpu_set_t), &cpuset); + pthread_setaffinity_np(pthread, size, &cpuset); if (core_bind != std::thread::hardware_concurrency() - 1) core_bind++; else