diff --git a/src/OpenThreads/pthreads/PThread.cpp b/src/OpenThreads/pthreads/PThread.cpp index 6c55862a5..5cead3ce0 100644 --- a/src/OpenThreads/pthreads/PThread.cpp +++ b/src/OpenThreads/pthreads/PThread.cpp @@ -108,10 +108,13 @@ void thread_cleanup_handler(void *arg) namespace OpenThreads { -static void setCPUMask(cpu_set_t* cpumask, const Affinity& affinity) +#if defined(HAVE_PTHREAD_SETAFFINITY_NP) || defined(HAVE_THREE_PARAM_SCHED_SETAFFINITY) || defined(HAVE_TWO_PARAM_SCHED_SETAFFINITY) +static void setAffinity(const Affinity& affinity) { - std::cout<<"setCPUMask : "<< affinity.activeCPUs.size() <(thread->_prvData); // set up processor affinity - cpu_set_t cpumask; - setCPUMask( &cpumask, pd->affinity ); - -#if defined(HAVE_PTHREAD_SETAFFINITY_NP) - pthread_setaffinity_np( pthread_self(), sizeof(cpumask), &cpumask); -#elif defined(HAVE_THREE_PARAM_SCHED_SETAFFINITY) - sched_setaffinity( 0, sizeof(cpumask), &cpumask ); -#elif defined(HAVE_TWO_PARAM_SCHED_SETAFFINITY) - sched_setaffinity( 0, &cpumask ); -#endif - + setAffinity( pd->affinity ); ThreadCleanupStruct tcs; tcs.thread = thread; @@ -549,19 +557,7 @@ int OpenThreads::SetProcessorAffinityOfCurrentThread(const Affinity& affinity) else { // set up processor affinity - cpu_set_t cpumask; - setCPUMask( &cpumask, affinity ); - -#if defined(HAVE_PTHREAD_SETAFFINITY_NP) - pthread_setaffinity_np( pthread_self(), sizeof(cpumask), &cpumask); - return 0; -#elif defined(HAVE_THREE_PARAM_SCHED_SETAFFINITY) - sched_setaffinity( 0, sizeof(cpumask), &cpumask ); - return 0; -#elif defined(HAVE_TWO_PARAM_SCHED_SETAFFINITY) - sched_setaffinity( 0, &cpumask ); - return 0; -#endif + setAffinity( affinity ); } return -1; @@ -580,16 +576,7 @@ int Thread::setProcessorAffinity(const Affinity& affinity) if (pd->isRunning() && Thread::CurrentThread()==this) { - cpu_set_t cpumask; - setCPUMask(&cpumask, affinity); - -#if defined(HAVE_PTHREAD_SETAFFINITY_NP) - return pthread_setaffinity_np (pthread_self(), sizeof(cpumask), &cpumask); -#elif defined(HAVE_THREE_PARAM_SCHED_SETAFFINITY) - return sched_setaffinity( 0, sizeof(cpumask), &cpumask ); -#elif defined(HAVE_TWO_PARAM_SCHED_SETAFFINITY) - return sched_setaffinity( 0, &cpumask ); -#endif + setAffinity( affinity ); } return -1;