3 #include "src/mc/Session.hpp"
4 #include "src/mc/mc_private.hpp"
5 #include "src/mc/remote/RemoteSimulation.hpp"
6 #include <xbt/asserts.h>
9 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_api, mc, "Logging specific to MC Fasade APIs ");
14 void mc_api::initialize(char** argv)
16 simgrid::mc::session = new simgrid::mc::Session([argv] {
18 while (argv[i] != nullptr && argv[i][0] == '-')
20 xbt_assert(argv[i] != nullptr,
21 "Unable to find a binary to exec on the command line. Did you only pass config flags?");
22 execvp(argv[i], argv + i);
23 xbt_die("The model-checked process failed to exec(): %s", strerror(errno));
27 void mc_api::s_initialize() const
29 session->initialize();
32 void mc_api::create_model_checker(std::unique_ptr<RemoteSimulation> remote_simulation, int sockfd)
37 ModelChecker* mc_api::get_model_checker() const
39 return mc_model_checker;
42 void mc_api::mc_inc_visited_states() const
44 mc_model_checker->visited_states++;
47 void mc_api::mc_inc_executed_trans() const
49 mc_model_checker->executed_transitions++;
52 unsigned long mc_api::mc_get_visited_states() const
54 return mc_model_checker->visited_states;
57 unsigned long mc_api::mc_get_executed_trans() const
59 return mc_model_checker->executed_transitions;
62 bool mc_api::mc_check_deadlock() const
64 return mc_model_checker->checkDeadlock();
67 std::vector<simgrid::mc::ActorInformation>& mc_api::get_actors() const
69 return mc_model_checker->get_remote_simulation().actors();
72 bool mc_api::actor_is_enabled(aid_t pid) const
74 return session->actor_is_enabled(pid);
77 void mc_api::mc_assert(bool notNull, const char* message) const
80 xbt_assert(mc_model_checker == nullptr, message);
82 xbt_assert(mc_model_checker != nullptr, message);
85 bool mc_api::mc_is_null() const
87 auto is_null = (mc_model_checker == nullptr) ? true : false;
91 Checker* mc_api::mc_get_checker() const
93 return mc_model_checker->getChecker();
96 RemoteSimulation& mc_api::mc_get_remote_simulation() const
98 return mc_model_checker->get_remote_simulation();
101 void mc_api::handle_simcall(Transition const& transition) const
103 mc_model_checker->handle_simcall(transition);
106 void mc_api::mc_wait_for_requests() const
108 mc_model_checker->wait_for_requests();
111 void mc_api::mc_exit(int status) const
113 mc_model_checker->exit(status);
116 std::string const& mc_api::mc_get_host_name(std::string const& hostname) const
118 return mc_model_checker->get_host_name(hostname);
121 PageStore& mc_api::mc_page_store() const
123 return mc_model_checker->page_store();
126 void mc_api::mc_cleanup()
130 void mc_api::s_close() const
135 void mc_api::s_restore_initial_state() const
137 session->restore_initial_state();
140 void mc_api::execute(Transition const& transition)
142 session->execute(transition);
145 void mc_api::s_log_state() const
147 session->log_state();
151 } // namespace simgrid