A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Direct context switching: clean the semantics of parmap
[simgrid.git]
/
src
/
xbt
/
parmap_private.h
diff --git
a/src/xbt/parmap_private.h
b/src/xbt/parmap_private.h
index
02da424
..
8b6c1bb
100644
(file)
--- 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/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 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;
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;
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 num_workers;
unsigned int workers_max_id;
void_f_pvoid_t fun;
xbt_dynar_t data;
+ unsigned int index;
} s_xbt_parmap_t;
} s_xbt_parmap_t;
-
#endif
#endif