X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a476c1fc22cde6f6b539e5fa1cbdafe4cd5e6aac..b519c710a179e22b19c6d21721c6c0dfd13e65ce:/src/mc/mc_config.cpp diff --git a/src/mc/mc_config.cpp b/src/mc/mc_config.cpp index ad0fe22f90..f219a1175a 100644 --- a/src/mc/mc_config.cpp +++ b/src/mc/mc_config.cpp @@ -14,7 +14,7 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(xbt_cfg); -bool simgrid::mc::cfg_do_model_check = false; +simgrid::mc::ModelCheckingMode simgrid::mc::model_checking_mode = simgrid::mc::ModelCheckingMode::NONE; static void _mc_cfg_cb_check(const char* spec, bool more_check = true) { @@ -31,7 +31,15 @@ static void _mc_cfg_cb_check(const char* spec, bool more_check = true) /* Replay (this part is enabled even if MC it disabled) */ simgrid::config::Flag _sg_mc_record_path{ "model-check/replay", "Model-check path to replay (as reported by SimGrid when a violation is reported)", "", - [](std::string_view value) { MC_record_path() = value; }}; + [](std::string_view value) { + xbt_assert(simgrid::mc::model_checking_mode == simgrid::mc::ModelCheckingMode::NONE || + simgrid::mc::model_checking_mode == simgrid::mc::ModelCheckingMode::REPLAY, + "Specifying a MC replay path is not allowed when running the model-checker in mode %s. " + "Either remove the model-check/replay parameter, or execute your code out of simgrid-mc.", + to_c_str(simgrid::mc::model_checking_mode)); + simgrid::mc::model_checking_mode = simgrid::mc::ModelCheckingMode::REPLAY; + MC_record_path() = value; + }}; #if SIMGRID_HAVE_MC simgrid::config::Flag _sg_mc_timeout{ @@ -52,6 +60,13 @@ simgrid::config::Flag _sg_mc_sleep_set{ "model-check/sleep-set", "Whether to enable the use of sleep-set in the reduction algorithm", false, [](bool) { _mc_cfg_cb_check("value to enable/disable the use of sleep-set in the reduction algorithm"); }}; +simgrid::config::Flag _sg_mc_strategy{ + "model-check/strategy", "Specify the the kind of heuristic to use for guided model-checking", "none", + [](std::string_view value) { + if (value != "none" && value != "nb_wait") + xbt_die("configuration option 'model-check/guided-mc' can only take 'none' or 'nb_wait' as a value"); + }}; + simgrid::config::Flag _sg_mc_checkpoint{ "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 "