X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/1b1016c3ad9e396286bf2c692c92cf5fd567b1d3..ec38bc5664db40ada68448c162478e0d20189fa0:/src/xbt/xbt_os_thread.c diff --git a/src/xbt/xbt_os_thread.c b/src/xbt/xbt_os_thread.c index f29549575c..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[] = { @@ -232,10 +249,14 @@ void xbt_os_thread_setstacksize(int stack_size) void xbt_os_thread_setguardsize(int guard_size) { +#ifdef WIN32 + THROW_UNIMPLEMENTED; //pthread_attr_setguardsize is not implemented in pthread.h on windows +#else size_t sz = guard_size; int res = pthread_attr_setguardsize(&thread_attr, sz); if (res) XBT_WARN("pthread_attr_setguardsize failed (%d) for size: %zd", res, sz); +#endif } const char *xbt_os_thread_name(xbt_os_thread_t t)