X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/debd23d022bac4392bf3847e611b81cfd4915ffc..6e5cfd7ff86900354c20502af95ee5f751492753:/src/xbt/parmap_private.h diff --git a/src/xbt/parmap_private.h b/src/xbt/parmap_private.h index 283b025774..8b6c1bb677 100644 --- a/src/xbt/parmap_private.h +++ b/src/xbt/parmap_private.h @@ -12,23 +12,37 @@ #include "xbt/sysdep.h" #include "xbt/dynar.h" #include "xbt/log.h" +#include "xbt/xbt_os_time.h" typedef enum{ - PARMAP_WAIT = 0, - PARMAP_WORK, - PARMAP_DESTROY, + PARMAP_WORK = 0, + PARMAP_DESTROY } e_xbt_parmap_flag_t; +#ifdef HAVE_FUTEX_H +typedef struct s_xbt_event{ + int work; + int done; + unsigned int thread_counter; + unsigned int threads_to_wait; +}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 { - xbt_os_mutex_t mutex; /* pool's mutex */ - xbt_os_cond_t job_posted; /* job is posted */ - xbt_os_cond_t all_done; /* job is done */ - e_xbt_parmap_flag_t *flags; /* Per thread flag + lastone for the parmap */ + e_xbt_parmap_flag_t status; +#ifdef HAVE_FUTEX_H + xbt_event_t sync_event; +#endif unsigned int num_workers; - unsigned int num_idle_workers; unsigned int workers_max_id; void_f_pvoid_t fun; xbt_dynar_t data; + unsigned int index; } s_xbt_parmap_t; #endif