X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/cabb5dfe7c5ffb5308a531895bc156ab2fb8535c..d89ca681772fdaafdd69049d4d66676a4e98de38:/src/mc/api.cpp diff --git a/src/mc/api.cpp b/src/mc/api.cpp index 92317db064..f3e5b16171 100644 --- a/src/mc/api.cpp +++ b/src/mc/api.cpp @@ -125,16 +125,12 @@ simgrid::mc::ActorInformation* Api::actor_info_cast(smx_actor_t actor) const return process_info; } -bool Api::simcall_check_dependency(smx_simcall_t req1, smx_simcall_t req2) const -{ - // FIXME: this should be removed now - /* Make sure that req1 and req2 are in alphabetic order */ - if (req1->call_ > req2->call_) { - auto temp = req1; - req1 = req2; - req2 = temp; - } - return true; +bool Api::requests_are_dependent(RemotePtr obs1, + RemotePtr obs2) const +{ + xbt_assert(mc_model_checker != nullptr, "Must be called from MCer"); + + return mc_model_checker->requests_are_dependent(obs1, obs2); } xbt::string const& Api::get_actor_host_name(smx_actor_t actor) const @@ -449,14 +445,18 @@ void Api::dump_record_path() const smx_simcall_t Api::mc_state_choose_request(simgrid::mc::State* state) const { RemoteProcess& process = mc_model_checker->get_remote_process(); + XBT_DEBUG("Search for an actor to run. %zu actors to consider", process.actors().size()); for (auto& actor : process.actors()) { /* Only consider the actors that were marked as interleaving by the checker algorithm */ if (not state->actor_states_[actor.copy.get_buffer()->get_pid()].is_todo()) continue; smx_simcall_t res = MC_state_choose_request_for_process(process, state, actor.copy.get_buffer()); - if (res) + if (res) { + XBT_DEBUG("Let's run actor %ld, going for transition %s", actor.copy.get_buffer()->get_pid(), + SIMIX_simcall_name(*res)); return res; + } } return nullptr; } @@ -559,11 +559,11 @@ void Api::s_close() const session_singleton->close(); } -void Api::execute(Transition& transition, smx_simcall_t simcall) const +RemotePtr Api::execute(Transition& transition, smx_simcall_t simcall) const { /* FIXME: once all simcalls have observers, kill the simcall parameter and use mc_model_checker->simcall_to_string() */ transition.textual = request_to_string(simcall, transition.times_considered_); - session_singleton->execute(transition); + return session_singleton->execute(transition); } void Api::automaton_load(const char* file) const