X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f3ae712a1b95294052b6e8136d0f0f2d4b30e6eb..a2d7cc3adbdd23a951262e4bbad302651c0dd817:/src/xbt/xbt_os_thread.c diff --git a/src/xbt/xbt_os_thread.c b/src/xbt/xbt_os_thread.c index c9dd6910b9..2059f2c547 100644 --- a/src/xbt/xbt_os_thread.c +++ b/src/xbt/xbt_os_thread.c @@ -21,18 +21,17 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(xbt_sync_os, xbt, "Synchronization mechanism (OS-level)"); /* ********************************* PTHREAD IMPLEMENTATION ************************************ */ -#ifdef HAVE_PTHREAD_H +#ifndef _XBT_WIN32 +#include #include #include -#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, - const struct timespec *abs_timeout); +#ifdef CORE_BINDING +#define _GNU_SOURCE +#include #endif - /* use named sempahore when sem_init() does not work */ #ifndef HAVE_SEM_INIT static int next_sem_ID = 0; @@ -193,6 +192,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[] = {