Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Use of busy wait instead of futex if there is not futex.h
[simgrid.git] / src / xbt / parmap.c
index 44f010e..0952118 100644 (file)
@@ -131,11 +131,15 @@ static void xbt_parmap_set_mode(xbt_parmap_t parmap, e_xbt_parmap_mode_t mode)
       parmap->wait_f = xbt_parmap_posix_wait;
       break;
 
+
     case XBT_PARMAP_FUTEX:
+#ifdef HAVE_FUTEX_H
       parmap->start_f = xbt_parmap_futex_start;
       parmap->end_f = xbt_parmap_futex_end;
       parmap->signal_f = xbt_parmap_futex_signal;
       parmap->wait_f = xbt_parmap_futex_wait;
+#endif
+      xbt_die("Impossible to use futex on Mac");
       break;
 
     case XBT_PARMAP_BUSY_WAIT:
@@ -441,8 +445,11 @@ XBT_TEST_UNIT("basic", test_parmap_basic, "Basic usage")
   xbt_dynar_t data = xbt_dynar_new(sizeof(void *), NULL);
 
   /* Create the parallel map */
+#ifdef HAVE_FUTEX_H
   parmap = xbt_parmap_new(10, XBT_PARMAP_FUTEX);
-
+#else
+  parmap = xbt_parmap_new(10, XBT_PARMAP_BUSY_WAIT);
+#endif
   for (j = 0; j < 100; j++) {
     xbt_dynar_push_as(data, void *, (void *)j);
   }