X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ffe8ce65fd9a8e18a0469f26f067c3ea6d5d60d4..c3ac58f9e63770cca194ec50390ac8ccc8e499e8:/src/mc/simgrid_mc.cpp diff --git a/src/mc/simgrid_mc.cpp b/src/mc/simgrid_mc.cpp index d121fdbf73..b70091d5f7 100644 --- a/src/mc/simgrid_mc.cpp +++ b/src/mc/simgrid_mc.cpp @@ -29,6 +29,7 @@ #include "mc_protocol.h" #include "mc_server.h" #include "mc_model_checker.h" +#include "mc_safety.h" XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_main, mc, "Entry point for simgrid-mc"); @@ -76,8 +77,21 @@ static int do_parent(int socket, pid_t child) mc_server = new s_mc_server(child, socket); mc_server->start(); MC_init_pid(child, socket); - mc_server->resume(&mc_model_checker->process); - mc_server->loop(); + + if (_sg_mc_comms_determinism || _sg_mc_send_determinism) { + mc_server->loop(); + } + + else if (!_sg_mc_property_file || _sg_mc_property_file[0] == '\0') { + if (mc_reduce_kind == e_mc_reduce_unset) + mc_reduce_kind = e_mc_reduce_dpor; + MC_do_the_modelcheck_for_real(); + } + + else { + mc_server->loop(); + } + mc_server->shutdown(); mc_server->exit(); } @@ -107,7 +121,7 @@ int main(int argc, char** argv) if (argc < 2) xbt_die("Missing arguments.\n"); - bool server_mode = false; + bool server_mode = true; char* env = std::getenv("SIMGRID_MC_MODE"); if (env) { if (std::strcmp(env, "server") == 0) @@ -115,7 +129,7 @@ int main(int argc, char** argv) else if (std::strcmp(env, "standalone") == 0) server_mode = false; else - XBT_WARN("Unrecognised value for SIMGRID_MC_MODE (server/standalone)"); + xbt_die("Unrecognised value for SIMGRID_MC_MODE (server/standalone)"); } if (!server_mode) {