- simcall_BODY_cond_wait(cond, mutex);
-}
-
-/**
- * @ingroup simix_synchro_management
- *
- */
-int simcall_cond_wait_timeout(smx_cond_t cond, smx_mutex_t mutex, double timeout)
-{
- xbt_assert(std::isfinite(timeout), "timeout is not finite!");
- return simcall_BODY_cond_wait_timeout(cond, mutex, timeout);
-}
-
-/**
- * @ingroup simix_synchro_management
- *
- */
-void simcall_sem_acquire(smx_sem_t sem)
-{
- simcall_BODY_sem_acquire(sem);
-}
-
-/**
- * @ingroup simix_synchro_management
- *
- */
-int simcall_sem_acquire_timeout(smx_sem_t sem, double timeout)
-{
- xbt_assert(std::isfinite(timeout), "timeout is not finite!");
- return simcall_BODY_sem_acquire_timeout(sem, timeout);
-}
-
-e_smx_state_t simcall_io_wait(simgrid::kernel::activity::ActivityImpl* io, double timeout)
-{
- return (e_smx_state_t)simcall_BODY_io_wait(static_cast<simgrid::kernel::activity::IoImpl*>(io), timeout);
-}
-
-bool simcall_io_test(simgrid::kernel::activity::ActivityImpl* io)
-{
- return simcall_BODY_io_test(static_cast<simgrid::kernel::activity::IoImpl*>(io));
-}
-
-void simcall_run_kernel(std::function<void()> const& code, simgrid::mc::SimcallInspector* t)
-{
- simgrid::kernel::actor::ActorImpl::self()->simcall.inspector_ = t;
- simcall_BODY_run_kernel(&code);
+ auto self = simgrid::kernel::actor::ActorImpl::self();
+ self->simcall_.call_ = call;
+ self->simcall_.code_ = &code;
+ if (not simgrid::kernel::EngineImpl::get_instance()->is_maestro(self)) {
+ XBT_DEBUG("Yield process '%s' on simcall %s", self->get_cname(), self->simcall_.get_cname());
+ self->yield();
+ } else {
+ self->simcall_handle(0);
+ }