X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d8308c2cacc831e01b98fa8e0d593f1480c25892..f57edc1d5b4f497883b451fc85d2d653d27a8247:/src/xbt/parmap_private.h diff --git a/src/xbt/parmap_private.h b/src/xbt/parmap_private.h index 02da424924..8b6c1bb677 100644 --- a/src/xbt/parmap_private.h +++ b/src/xbt/parmap_private.h @@ -12,33 +12,37 @@ #include "xbt/sysdep.h" #include "xbt/dynar.h" #include "xbt/log.h" - +#include "xbt/xbt_os_time.h" typedef enum{ PARMAP_WORK = 0, PARMAP_DESTROY } e_xbt_parmap_flag_t; -typedef struct s_xbt_barrier{ - int futex; - unsigned int thread_count; +#ifdef HAVE_FUTEX_H +typedef struct s_xbt_event{ + int work; + int done; + unsigned int thread_counter; unsigned int threads_to_wait; -} s_xbt_barrier_t, *xbt_barrier_t; - -/* Wait for at least num_threads threads to arrive to the barrier */ -void xbt_barrier_init(xbt_barrier_t barrier, unsigned int threads_to_wait); -void xbt_barrier_wait(xbt_barrier_t barrier); +}s_xbt_event_t, *xbt_event_t; +void xbt_event_init(xbt_event_t event); +void xbt_event_signal(xbt_event_t event); +void xbt_event_wait(xbt_event_t event); +void xbt_event_end(xbt_event_t event); +#endif typedef struct s_xbt_parmap { e_xbt_parmap_flag_t status; - xbt_barrier_t workers_ready; - xbt_barrier_t workers_done; +#ifdef HAVE_FUTEX_H + xbt_event_t sync_event; +#endif unsigned int num_workers; unsigned int workers_max_id; void_f_pvoid_t fun; xbt_dynar_t data; + unsigned int index; } s_xbt_parmap_t; - #endif