#include "src/mc/mc_base.hpp"
#include "mc/mc.h"
+#include "src/kernel/EngineImpl.hpp"
#include "src/kernel/activity/CommImpl.hpp"
#include "src/kernel/activity/MutexImpl.hpp"
-#include "src/mc/checker/SimcallObserver.hpp"
+#include "src/kernel/actor/SimcallObserver.hpp"
#include "src/mc/mc_config.hpp"
#include "src/mc/mc_replay.hpp"
-#include "src/simix/smx_private.hpp"
#include "xbt/random.hpp"
static simgrid::xbt::random::XbtRandom prng;
return prng.uniform_int(min, max);
}
- simgrid::mc::RandomSimcall observer{SIMIX_process_self(), min, max};
+ simgrid::kernel::actor::RandomSimcall observer{simgrid::kernel::actor::ActorImpl::self(), min, max};
return simgrid::kernel::actor::simcall([&observer] { return observer.get_value(); }, &observer);
}
namespace simgrid {
namespace mc {
-void wait_for_requests()
+void execute_actors()
{
+ auto* engine = kernel::EngineImpl::get_instance();
#if SIMGRID_HAVE_MC
xbt_assert(mc_model_checker == nullptr, "This must be called from the client");
#endif
- while (not simix_global->actors_to_run.empty()) {
- simix_global->run_all_actors();
- for (smx_actor_t const& process : simix_global->actors_that_ran) {
- const s_smx_simcall* req = &process->simcall_;
+ while (engine->has_actors_to_run()) {
+ engine->run_all_actors();
+ for (auto const& actor : engine->get_actors_that_ran()) {
+ const s_smx_simcall* req = &actor->simcall_;
if (req->call_ != simix::Simcall::NONE && not simgrid::mc::request_is_visible(req))
- process->simcall_handle(0);
+ actor->simcall_handle(0);
}
}
#if SIMGRID_HAVE_MC
- xbt_dynar_reset(simix_global->actors_vector);
- for (std::pair<const aid_t, smx_actor_t> const& kv : simix_global->process_list) {
+ engine->reset_actor_dynar();
+ for (auto const& kv : engine->get_actor_list()) {
auto actor = kv.second;
if (actor->simcall_.observer_ != nullptr)
actor->simcall_.mc_max_consider_ = actor->simcall_.observer_->get_max_consider();
- xbt_dynar_push_as(simix_global->actors_vector, smx_actor_t, actor);
+ engine->add_actor_to_dynar(actor);
}
#endif
}