#include "src/mc/mc_forward.hpp"
#endif
#include "src/kernel/activity/ConditionVariableImpl.hpp"
+#include "src/mc/checker/SimcallObserver.hpp"
XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(simix_popping);
"Simcall::COMM_TESTANY",
"Simcall::MUTEX_LOCK",
"Simcall::MUTEX_TRYLOCK",
- "Simcall::MUTEX_UNLOCK",
"Simcall::COND_WAIT",
"Simcall::COND_WAIT_TIMEOUT",
"Simcall::SEM_ACQUIRE",
"Simcall::SEM_ACQUIRE_TIMEOUT",
- "Simcall::MC_RANDOM",
"Simcall::RUN_KERNEL",
"Simcall::RUN_BLOCKING",
}};
*
* This function is generated from src/simix/simcalls.in
*/
-void simgrid::kernel::actor::ActorImpl::simcall_handle(int value) {
+void simgrid::kernel::actor::ActorImpl::simcall_handle(int times_considered_)
+{
XBT_DEBUG("Handling simcall %p: %s", &simcall_, SIMIX_simcall_name(simcall_.call_));
- SIMCALL_SET_MC_VALUE(simcall_, value);
+ SIMCALL_SET_MC_VALUE(simcall_, times_considered_);
+ if (simcall_.observer_ != nullptr)
+ simcall_.observer_->prepare(times_considered_);
if (context_->wannadie())
return;
switch (simcall_.call_) {
simcall_answer();
break;
- case Simcall::MUTEX_UNLOCK:
- simcall_HANDLER_mutex_unlock(&simcall_, simgrid::simix::unmarshal<smx_mutex_t>(simcall_.args_[0]));
- simcall_answer();
- break;
-
case Simcall::COND_WAIT:
simcall_HANDLER_cond_wait(&simcall_, simgrid::simix::unmarshal<smx_cond_t>(simcall_.args_[0]), simgrid::simix::unmarshal<smx_mutex_t>(simcall_.args_[1]));
break;
simcall_HANDLER_sem_acquire_timeout(&simcall_, simgrid::simix::unmarshal<smx_sem_t>(simcall_.args_[0]), simgrid::simix::unmarshal<double>(simcall_.args_[1]));
break;
- case Simcall::MC_RANDOM:
- simgrid::simix::marshal<int>(simcall_.result_, simcall_HANDLER_mc_random(&simcall_, simgrid::simix::unmarshal<int>(simcall_.args_[0]), simgrid::simix::unmarshal<int>(simcall_.args_[1])));
- simcall_answer();
- break;
-
case Simcall::RUN_KERNEL:
SIMIX_run_kernel(simgrid::simix::unmarshal<std::function<void()> const*>(simcall_.args_[0]));
simcall_answer();