X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/5ed37babb2fa9097abe82df299c0aa259ed84d5a..b519c710a179e22b19c6d21721c6c0dfd13e65ce:/src/mc/mc_config.cpp diff --git a/src/mc/mc_config.cpp b/src/mc/mc_config.cpp index 1a6af99f3a..f219a1175a 100644 --- a/src/mc/mc_config.cpp +++ b/src/mc/mc_config.cpp @@ -5,8 +5,8 @@ #include "src/mc/mc_config.hpp" #include "src/mc/mc_replay.hpp" +#include "src/simgrid/sg_config.hpp" #include -#include #if SIMGRID_HAVE_MC #include @@ -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{ @@ -48,6 +56,17 @@ static simgrid::config::Flag cfg_mc_reduction{ xbt_die("configuration option 'model-check/reduction' can only take 'none' or 'dpor' as a value"); }}; +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 " @@ -105,12 +124,6 @@ static simgrid::config::Flag _sg_mc_max_visited_states__{ _sg_mc_max_visited_states = value; }}; -simgrid::config::Flag _sg_mc_dot_output_file{ - "model-check/dot-output", - "Name of dot output file corresponding to graph state", - "", - [](const std::string&) { _mc_cfg_cb_check("file name for a dot output of graph state"); }}; - simgrid::config::Flag _sg_mc_termination{ "model-check/termination", "Whether to enable non progressive cycle detection", false, [](bool) { _mc_cfg_cb_check("value to enable/disable the detection of non progressive cycles"); }};