Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Remove parmap_private.h since parmap.c is the only file using it
[simgrid.git] / src / xbt / parmap.c
index 19dcb58..5801828 100644 (file)
 #else
        #include "xbt/xbt_os_thread.h"
 #endif
-#include <errno.h>
-#include "parmap_private.h"
+#include "xbt/parmap.h"
+#include "xbt/log.h"
+#include "xbt/function_types.h"
+#include "xbt/dynar.h"
+#include "xbt/xbt_os_thread.h"
+#include "xbt/sysdep.h"
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(xbt_parmap, xbt, "parmap: parallel map");
 XBT_LOG_NEW_SUBCATEGORY(xbt_parmap_unit, xbt_parmap, "parmap unit testing");
 
+typedef enum{
+  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 {
+  e_xbt_parmap_flag_t status;
+#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;
+
 static void *_xbt_parmap_worker_main(void *parmap);
 #ifdef HAVE_FUTEX_H
        static void futex_wait(int *uaddr, int val);