+ xbt_cfg_register(&_surf_cfg_set, "model-check/checkpoint",
+ "Specify the amount of steps between checkpoints during stateful model-checking (default: 0 => stateless verification). "
+ "If value=1, one checkpoint is saved for each step => faster verification, but huge memory consumption; higher values are good compromises between speed and memory consumption.",
+ xbt_cfgelm_int, &default_value_int, 0, 1,
+ _mc_cfg_cb_checkpoint, NULL);
+
+ /* do liveness model-checking */
+ default_value = xbt_strdup("");
+ xbt_cfg_register(&_surf_cfg_set, "model-check/property",
+ "Specify the name of the file containing the property. It must be the result of the ltl2ba program.",
+ xbt_cfgelm_string, &default_value, 0, 1,
+ _mc_cfg_cb_property, NULL);
+
+ /* Specify the kind of model-checking reduction */
+ default_value = xbt_strdup("unset");
+ xbt_cfg_register(&_surf_cfg_set, "model-check/reduction",
+ "Specify the kind of exploration reduction (either none or DPOR)",
+ xbt_cfgelm_string, &default_value, 0, 1,
+ _mc_cfg_cb_reduce, NULL);
+#endif
+
+ /* do verbose-exit */
+ default_value_int = 1;
+ xbt_cfg_register(&_surf_cfg_set, "verbose-exit",
+ "Activate the \"do nothing\" mode in Ctrl-C",
+ xbt_cfgelm_int, &default_value_int, 0, 1,
+ _surf_cfg_cb_verbose_exit, NULL);
+
+
+ /* context factory */
+ default_value = xbt_strdup("ucontext");
+ xbt_cfg_register(&_surf_cfg_set, "contexts/factory",
+ "Context factory to use in SIMIX (ucontext, thread or raw)",
+ xbt_cfgelm_string, &default_value, 1, 1, _surf_cfg_cb_context_factory, NULL);
+
+ /* stack size of contexts in Ko */
+ default_value_int = 128;
+ xbt_cfg_register(&_surf_cfg_set, "contexts/stack_size",
+ "Stack size of contexts in Kib (ucontext or raw only)",
+ xbt_cfgelm_int, &default_value_int, 1, 1,
+ _surf_cfg_cb_context_stack_size, NULL);
+
+ /* number of parallel threads for user processes */
+ default_value_int = 1;
+ xbt_cfg_register(&_surf_cfg_set, "contexts/nthreads",
+ "Number of parallel threads used to execute user contexts",
+ xbt_cfgelm_int, &default_value_int, 1, 1,
+ _surf_cfg_cb_contexts_nthreads, NULL);
+
+ /* minimal number of user contexts to be run in parallel */
+ default_value_int = 2;
+ xbt_cfg_register(&_surf_cfg_set, "contexts/parallel_threshold",
+ "Minimal number of user contexts to be run in parallel (raw contexts only)",
+ xbt_cfgelm_int, &default_value_int, 1, 1,
+ _surf_cfg_cb_contexts_parallel_threshold, NULL);
+
+ /* synchronization mode for parallel user contexts */
+#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,
+ _surf_cfg_cb_contexts_parallel_mode, NULL);
+
+ /* number of parallel threads for Surf */
+ default_value_int = surf_get_nthreads();
+ xbt_cfg_register(&_surf_cfg_set, "surf/nthreads",
+ "Number of parallel threads used to update Surf models",
+ xbt_cfgelm_int, &default_value_int, 1, 1,
+ _surf_cfg_cb_surf_nthreads, NULL);
+
+ default_value = xbt_strdup("no");
+ xbt_cfg_register(&_surf_cfg_set, "network/coordinates",
+ "\"yes\" or \"no\", specifying whether we use a coordinate-based routing (as Vivaldi)",
+ xbt_cfgelm_string, &default_value, 1, 1,
+ _surf_cfg_cb__surf_network_coordinates, NULL);
+ xbt_cfg_setdefault_string(_surf_cfg_set, "network/coordinates", default_value);
+
+ default_value_int = 0;
+ xbt_cfg_register(&_surf_cfg_set, "network/crosstraffic",
+ "Activate the interferences between uploads and downloads for fluid max-min models (LV08, CM02)",
+ xbt_cfgelm_int, &default_value_int, 0, 1,
+ _surf_cfg_cb__surf_network_crosstraffic, NULL);
+ xbt_cfg_setdefault_int(_surf_cfg_set, "network/crosstraffic", default_value_int);