Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Parmap: add a value XBT_PARMAP_DEFAULT that decides the synchro mode for you
[simgrid.git] / src / xbt / parmap.c
index 0952118..9f2f35b 100644 (file)
@@ -120,6 +120,13 @@ void xbt_parmap_destroy(xbt_parmap_t parmap)
  */
 static void xbt_parmap_set_mode(xbt_parmap_t parmap, e_xbt_parmap_mode_t mode)
 {
+  if (mode == XBT_PARMAP_DEFAULT) {
+#ifdef HAVE_FUTEX_H
+    mode = XBT_PARMAP_FUTEX;
+#else
+    mode = XBT_PARMAP_POSIX;
+#endif
+  }
   parmap->mode = mode;
 
   switch (mode) {
@@ -138,9 +145,10 @@ static void xbt_parmap_set_mode(xbt_parmap_t parmap, e_xbt_parmap_mode_t mode)
       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;
+#else
+      xbt_die("Futex is not available on this OS (maybe you are on a Mac).");
+#endif
 
     case XBT_PARMAP_BUSY_WAIT:
       parmap->start_f = xbt_parmap_busy_start;
@@ -148,6 +156,10 @@ static void xbt_parmap_set_mode(xbt_parmap_t parmap, e_xbt_parmap_mode_t mode)
       parmap->signal_f = xbt_parmap_busy_signal;
       parmap->wait_f = xbt_parmap_busy_wait;
       break;
+
+    case XBT_PARMAP_DEFAULT:
+      THROW_IMPOSSIBLE;
+      break;
   }
 }