X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/15c81e44412415173de220954a453019c68714cd..31ba7e44380b3c4e26ae014eec9e423193e54797:/src/xbt/xbt_os_thread.c diff --git a/src/xbt/xbt_os_thread.c b/src/xbt/xbt_os_thread.c index f34fb398e1..e18ae2ef2a 100644 --- a/src/xbt/xbt_os_thread.c +++ b/src/xbt/xbt_os_thread.c @@ -74,8 +74,7 @@ static xbt_running_ctx_t *_os_thread_get_running_ctx(void) static void _os_thread_ex_terminate(xbt_ex_t * e) { xbt_ex_display(e); - - abort(); + xbt_abort(); /* FIXME: there should be a configuration variable to choose to kill everyone or only this one */ } @@ -138,7 +137,7 @@ int xbt_os_thread_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void)) { #ifdef WIN32 - THROW_UNIMPLEMENTED; //pthread_atfork is not implemented in pthread.h on windows + THROW_UNIMPLEMENTED; //pthread_atfork is not implemented in pthread.h on windows #else return pthread_atfork(prepare, parent, child); #endif @@ -642,7 +641,7 @@ typedef struct xbt_os_thread_ { #endif /* the default size of the stack of the threads (in bytes)*/ -#define XBT_DEFAULT_THREAD_STACK_SIZE 4096 +#define XBT_DEFAULT_THREAD_STACK_SIZE 4096 /* key to the TLS containing the xbt_os_thread_t structure */ static unsigned long xbt_self_thread_key; @@ -1163,6 +1162,33 @@ void xbt_os_sem_get_value(xbt_os_sem_t sem, int *svalue) #endif + +/** @brief Returns the amount of cores on the current host */ +int xbt_os_get_numcores(void) { +#ifdef WIN32 + SYSTEM_INFO sysinfo; + GetSystemInfo(&sysinfo); + return sysinfo.dwNumberOfProcessors; +#elif MACOS + int nm[2]; + size_t len = 4; + uint32_t count; + + nm[0] = CTL_HW; nm[1] = HW_AVAILCPU; + sysctl(nm, 2, &count, &len, NULL, 0); + + if(count < 1) { + nm[1] = HW_NCPU; + sysctl(nm, 2, &count, &len, NULL, 0); + if(count < 1) { count = 1; } + } + return count; +#else + return sysconf(_SC_NPROCESSORS_ONLN); +#endif +} + + /***** reentrant mutexes *****/ typedef struct xbt_os_rmutex_ { xbt_os_mutex_t mutex;