- smx_simcall_t simcall = &proc.simcall_;
- MutexImpl* simcall_mutex;
- if (simcall->call_ == simix::Simcall::COND_WAIT_TIMEOUT)
- simcall_mutex = simcall_cond_wait_timeout__get__mutex(simcall);
- else {
- // FIXME? using here the MC observer to solve a problem not related to MC
- auto* observer = dynamic_cast<mc::ConditionWaitSimcall*>(simcall->observer_);
- xbt_assert(observer != nullptr);
- simcall_mutex = observer->get_mutex();
- }
- simcall->call_ = simix::Simcall::RUN_BLOCKING;
-
- simcall_mutex->lock(simcall->issuer_);
+ actor::Simcall* simcall = &proc.simcall_;
+ const auto* observer = dynamic_cast<kernel::actor::ConditionWaitSimcall*>(simcall->observer_);
+ xbt_assert(observer != nullptr);
+ observer->get_mutex()->lock_async(simcall->issuer_)->wait_for(simcall->issuer_, -1);