Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Use of busy wait instead of futex if there is not futex.h
authorPierre <pierre@erie.imag.fr>
Thu, 5 Jan 2012 11:40:35 +0000 (12:40 +0100)
committerPierre <pierre@erie.imag.fr>
Thu, 5 Jan 2012 11:40:35 +0000 (12:40 +0100)
src/surf/surf_config.c
src/xbt/parmap.c

index 0005033..a136ff9 100644 (file)
@@ -470,7 +470,11 @@ void surf_config_init(int *argc, char **argv)
         _surf_cfg_cb_contexts_parallel_threshold, NULL);
 
     /* minimal number of user contexts to be run in parallel */
+#ifdef HAVE_FUTEX_H
     default_value = xbt_strdup("futex");
+#else //No futex on mac and posix is unimplememted yet
+    default_value = xbt_strdup("busy_wait");
+#endif
     xbt_cfg_register(&_surf_cfg_set, "contexts/synchro",
         "Synchronization mode to use when running contexts in parallel (either futex, posix or busy_wait)",
         xbt_cfgelm_string, &default_value, 1, 1,
index 0b922d0..0952118 100644 (file)
@@ -445,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);
   }