X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ad02a1b4a1730fb36f36295f8749d4811f4d9a65..5843ccab4e336d47ca34f54e68760ac78d242f36:/src/sthread/sthread.c diff --git a/src/sthread/sthread.c b/src/sthread/sthread.c index 6f2073381a..af260220f2 100644 --- a/src/sthread/sthread.c +++ b/src/sthread/sthread.c @@ -38,6 +38,13 @@ static int (*raw_pthread_barrier_init)(pthread_barrier_t*, const pthread_barrier static int (*raw_pthread_barrier_wait)(pthread_barrier_t*); static int (*raw_pthread_barrier_destroy)(pthread_barrier_t*); +static int (*raw_pthread_cond_init)(pthread_cond_t*, const pthread_condattr_t*); +static int (*raw_pthread_cond_signal)(pthread_cond_t*); +static int (*raw_pthread_cond_broadcast)(pthread_cond_t*); +static int (*raw_pthread_cond_wait)(pthread_cond_t*, pthread_mutex_t*); +static int (*raw_pthread_cond_timedwait)(pthread_cond_t*, pthread_mutex_t*, const struct timespec* abstime); +static int (*raw_pthread_cond_destroy)(pthread_cond_t*); + static unsigned int (*raw_sleep)(unsigned int); static int (*raw_usleep)(useconds_t); static int (*raw_gettimeofday)(struct timeval*, void*); @@ -70,6 +77,13 @@ static void intercepter_init() raw_pthread_barrier_wait = dlsym(RTLD_NEXT, "raw_pthread_barrier_wait"); raw_pthread_barrier_destroy = dlsym(RTLD_NEXT, "raw_pthread_barrier_destroy"); + raw_pthread_cond_init = dlsym(RTLD_NEXT, "raw_pthread_cond_init"); + raw_pthread_cond_signal = dlsym(RTLD_NEXT, "raw_pthread_cond_signal"); + raw_pthread_cond_broadcast = dlsym(RTLD_NEXT, "raw_pthread_cond_broadcast"); + raw_pthread_cond_wait = dlsym(RTLD_NEXT, "raw_pthread_cond_wait"); + raw_pthread_cond_timedwait = dlsym(RTLD_NEXT, "raw_pthread_cond_timedwait"); + raw_pthread_cond_destroy = dlsym(RTLD_NEXT, "raw_pthread_cond_destroy"); + raw_sleep = dlsym(RTLD_NEXT, "sleep"); raw_usleep = dlsym(RTLD_NEXT, "usleep"); raw_gettimeofday = dlsym(RTLD_NEXT, "gettimeofday"); @@ -134,6 +148,16 @@ intercepted_pthcall(barrier_init, (pthread_barrier_t * barrier, const pthread_ba intercepted_pthcall(barrier_wait, (pthread_barrier_t* barrier),( barrier),((sthread_barrier_t*) barrier)); intercepted_pthcall(barrier_destroy, (pthread_barrier_t* barrier),( barrier),((sthread_barrier_t*) barrier)); +intercepted_pthcall(cond_init, (pthread_cond_t * cond, const pthread_condattr_t* attr), (cond, attr), + ((sthread_cond_t*)cond, (sthread_condattr_t*)attr)); +intercepted_pthcall(cond_signal, (pthread_cond_t * cond), (cond), ((sthread_cond_t*)cond)); +intercepted_pthcall(cond_broadcast, (pthread_cond_t * cond), (cond), ((sthread_cond_t*)cond)); +intercepted_pthcall(cond_wait, (pthread_cond_t * cond, pthread_mutex_t* mutex), (cond, mutex), + ((sthread_cond_t*)cond, (sthread_mutex_t*)mutex)); +intercepted_pthcall(cond_timedwait, (pthread_cond_t * cond, pthread_mutex_t* mutex, const struct timespec* abstime), + (cond, mutex, abstime), ((sthread_cond_t*)cond, (sthread_mutex_t*)mutex, abstime)); +intercepted_pthcall(cond_destroy, (pthread_cond_t * cond), (cond), ((sthread_cond_t*)cond)); + #define intercepted_call(rettype, name, raw_params, call_params, sim_params) \ rettype name raw_params \ { \ @@ -171,33 +195,6 @@ intercepted_call(int, gettimeofday, (struct timeval * tv, XBT_ATTRIB_UNUSED TIME intercepted_call(unsigned int, sleep, (unsigned int seconds), (seconds), (seconds)); intercepted_call(int, usleep, (useconds_t usec), (usec), (((double)usec) / 1000000.)); -#if 0 -int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *cond_attr) { - *cond = sg_cond_init(); - return 0; -} - -int pthread_cond_signal(pthread_cond_t *cond) { - sg_cond_notify_one(*cond); - return 0; -} - -int pthread_cond_broadcast(pthread_cond_t *cond) { - sg_cond_notify_all(*cond); - return 0; -} - -int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex) { - sg_cond_wait(*cond, *mutex); - return 0; -} - -int pthread_cond_destroy(pthread_cond_t *cond) { - sg_cond_destroy(*cond); - return 0; -} -#endif - /* Trampoline for the real main() */ static int (*raw_main)(int, char**, char**);