#include "src/mc/mc_safety.hpp"
#endif
+#include <climits>
+
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_config, mc, "Configuration of the Model Checker");
#if SIMGRID_HAVE_MC
simgrid::mc::ReductionMode reduction_mode = simgrid::mc::ReductionMode::unset;
}
}
-#endif
-
-#if !SIMGRID_HAVE_MC
+#else
#define _sg_do_model_check 0
#endif
_mc_cfg_cb_check("value to enable/disable the detection of send-determinism in the communications schemes");
}};
+static simgrid::config::Flag<std::string> _sg_mc_buffering{
+ "smpi/buffering", "Buffering semantic to use for MPI (only used in MC)", "zero", [](const std::string& value) {
+ try {
+ if (value == "zero")
+ simgrid::config::set_value<int>("smpi/send-is-detached-thresh", 0);
+ else if (value == "infty")
+ simgrid::config::set_value<int>("smpi/send-is-detached-thresh", INT_MAX);
+ else
+ xbt_die("configuration option 'smpi/buffering' can only take 'zero' or 'infty' as a value");
+ } catch (std::out_of_range& e) {
+ /* If the 'smpi/send-is-detached-thresh' does not exist, we are in the MCer process, where this option makes no
+ * sense, so just ignore it */
+ }
+ }};
+
static simgrid::config::Flag<std::string> _sg_mc_reduce{
"model-check/reduction", "Specify the kind of exploration reduction (either none or DPOR)", "dpor",
[](const std::string& value) {
xbt_die("configuration option model-check/reduction can only take 'none' or 'dpor' as a value");
}};
-simgrid::config::Flag<bool> _sg_mc_hash{
- "model-check/hash", "Whether to enable state hash for state comparison (experimental)", false,
- [](bool) { _mc_cfg_cb_check("value to enable/disable the use of global hash to speedup state comparaison"); }};
-
simgrid::config::Flag<int> _sg_mc_max_depth{"model-check/max-depth",
{"model-check/max_depth"},
"Maximal exploration depth (default: 1000)",