X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/39c91f0841014013aae4757a715e11bf5a0036dd..cd69f8c66886ae218c6a9b38125b27fe157e6bb2:/src/xbt/xbt_os_thread.c diff --git a/src/xbt/xbt_os_thread.c b/src/xbt/xbt_os_thread.c index c9dd6910b9..b97d90e675 100644 --- a/src/xbt/xbt_os_thread.c +++ b/src/xbt/xbt_os_thread.c @@ -26,6 +26,11 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(xbt_sync_os, xbt, #include #include +#ifdef CORE_BINDING +#define _GNU_SOURCE +#include +#endif + #ifdef HAVE_MUTEX_TIMEDLOCK /* redefine the function header since we fail to get this from system headers on amd (at least) */ int pthread_mutex_timedlock(pthread_mutex_t * mutex, @@ -193,6 +198,18 @@ xbt_os_thread_t xbt_os_thread_create(const char *name, } +#ifdef CORE_BINDING +int xbt_os_thread_bind(xbt_os_thread_t thread, int cpu){ + pthread_t pthread = thread->t; + int errcode = 0; + cpu_set_t cpuset; + CPU_ZERO(&cpuset); + CPU_SET(cpu, &cpuset); + errcode = pthread_setaffinity_np(pthread, sizeof(cpu_set_t), &cpuset); + return errcode; +} +#endif + void xbt_os_thread_setstacksize(int stack_size) { size_t alignment[] = {