X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/6f48d1a65eeb69ebae17feb1d714db4a60764a51..fbf3527063143094ed40d1a4a3bc595c29b81145:/include/xbt/xbt_os_thread.h diff --git a/include/xbt/xbt_os_thread.h b/include/xbt/xbt_os_thread.h index b7d7d95d64..3d9542941d 100644 --- a/include/xbt/xbt_os_thread.h +++ b/include/xbt/xbt_os_thread.h @@ -27,13 +27,10 @@ typedef struct xbt_os_thread_ *xbt_os_thread_t; #ifdef _XBT_WIN32 /* defined if this is a windows system, 32bits or 64bits) */ #include -typedef DWORD xbt_os_thread_key_t; -#else /* assume that every non-windows system is POSIX-compatible */ +#endif #include typedef pthread_key_t xbt_os_thread_key_t; -#endif - /** Calls pthread_atfork() if present, and raise an exception otherwise. * * The only known user of this wrapper is mmalloc_preinit(), but it is absolutely mandatory there: @@ -44,13 +41,13 @@ XBT_PUBLIC(int) xbt_os_thread_atfork(void (*prepare)(void), void (*parent)(void) XBT_PUBLIC(int) xbt_os_get_numcores(void); -XBT_PUBLIC(xbt_os_thread_t) xbt_os_thread_create(const char *name, pvoid_f_pvoid_t start_routine, void *param, - void *data); +XBT_PUBLIC(xbt_os_thread_t) xbt_os_thread_create(const char *name, pvoid_f_pvoid_t start_routine, void *param, void *data); -//#define CORE_BINDING //Uncomment this to enable binding of threads to physical cores. Only Linux. -#ifdef CORE_BINDING -XBT_PUBLIC(int) xbt_os_thread_bind(xbt_os_thread_t thread, int cpu); -#endif +/** Bind the thread to the given core, if possible. + * + * If pthread_setaffinity_np is not usable on that (non-gnu) platform, this function does nothing. + */ +XBT_PUBLIC(int) xbt_os_thread_bind(xbt_os_thread_t thread, int core); XBT_PUBLIC(void) xbt_os_thread_exit(int *retcode); XBT_PUBLIC(void) xbt_os_thread_detach(xbt_os_thread_t thread); @@ -66,7 +63,6 @@ XBT_PUBLIC(void*) xbt_os_thread_get_specific(xbt_os_thread_key_t key); XBT_PUBLIC(void) xbt_os_thread_join(xbt_os_thread_t thread, void **thread_return); XBT_PUBLIC(void) xbt_os_thread_yield(void); XBT_PUBLIC(void) xbt_os_thread_cancel(xbt_os_thread_t thread); -XBT_PUBLIC(void *) xbt_os_thread_getparam(void); XBT_PUBLIC(void) xbt_os_thread_setstacksize(int stack_size); XBT_PUBLIC(void) xbt_os_thread_setguardsize(int guard_size);