-int simcall_HANDLER_mc_compare_snapshots(smx_simcall_t simcall,
- mc_snapshot_t s1, mc_snapshot_t s2)
-{
- return snapshot_compare(s1, s2);
-}
-
-int MC_compare_snapshots(void *s1, void *s2)
-{
- return simcall_mc_compare_snapshots(s1, s2);
-}
-
-void MC_cut(void)
-{
- user_max_depth_reached = 1;
-}
-
-void MC_ignore(void* addr, size_t size)
-{
- xbt_assert(mc_mode != MC_MODE_SERVER);
- if (mc_mode != MC_MODE_CLIENT)
- return;
-
- s_mc_ignore_memory_message_t message;
- message.type = MC_MESSAGE_IGNORE_MEMORY;
- message.addr = (std::uintptr_t) addr;
- message.size = size;
- MC_client_send_message(&message, sizeof(message));
+ if (not MC_is_active() && not MC_record_replay_is_active()) { // no need to do a simcall in this case
+ static simgrid::xbt::random::XbtRandom prng;
+ return prng.uniform_int(min, max);
+ }
+ simgrid::kernel::actor::RandomSimcall observer{simgrid::kernel::actor::ActorImpl::self(), min, max};
+ return simgrid::kernel::actor::simcall_answered([&observer] { return observer.get_value(); }, &observer);