X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/58a279d8ca32bc6c9ff69d16d7e2ac815f80db2c..5f4a48dd53e0831ee818fa9e683c22ab97ae43cc:/src/xbt/xbt_os_thread.c diff --git a/src/xbt/xbt_os_thread.c b/src/xbt/xbt_os_thread.c index b020ebd04e..3cb6dbbb9a 100644 --- a/src/xbt/xbt_os_thread.c +++ b/src/xbt/xbt_os_thread.c @@ -137,7 +137,11 @@ void xbt_os_thread_mod_postexit(void) int xbt_os_thread_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void)) { +#ifdef WIN32 + xbt_die("Function pthread_atfork not implemented"); +#else return pthread_atfork(prepare, parent, child); +#endif } static void *wrapper_start_routine(void *s) @@ -149,7 +153,7 @@ static void *wrapper_start_routine(void *s) THROWF(system_error, errcode, "pthread_setspecific failed for xbt_self_thread_key"); - void *res = (*(t->start_routine)) (t->param); + void *res = t->start_routine(t->param); if (t->detached) xbt_os_thread_free_thread_data(t); return res; @@ -495,7 +499,7 @@ xbt_os_sem_t xbt_os_sem_init(unsigned int value) if ((res->ps == (sem_t *) SEM_FAILED) && (errno == ENAMETOOLONG)) { /* Old darwins only allow 13 chars. Did you create *that* amount of semaphores? */ res->name[13] = '\0'; - res->ps = sem_open(res->name, O_CREAT, 0644, 1); + res->ps = sem_open(res->name, O_CREAT, 0644, value); } if ((res->ps == (sem_t *) SEM_FAILED)) THROWF(system_error, errno, "sem_open() failed: %s", strerror(errno)); @@ -729,8 +733,7 @@ void xbt_os_thread_join(xbt_os_thread_t thread, void **thread_return) CloseHandle(thread->handle); - if (thread->name) - free(thread->name); + free(thread->name); free(thread); }