X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/121e8462d6b912a252a9016683d2e3e021cde9a0..661e64114641721802e309fc277b081ea01078c8:/src/kernel/activity/ConditionVariableImpl.cpp diff --git a/src/kernel/activity/ConditionVariableImpl.cpp b/src/kernel/activity/ConditionVariableImpl.cpp index 6370b6248d..c29e907ec1 100644 --- a/src/kernel/activity/ConditionVariableImpl.cpp +++ b/src/kernel/activity/ConditionVariableImpl.cpp @@ -60,14 +60,14 @@ void ConditionVariableImpl::signal() /* Now transform the cond wait simcall into a mutex lock one */ smx_simcall_t simcall = &proc.simcall; - smx_mutex_t simcall_mutex; + MutexImpl* simcall_mutex; if (simcall->call == SIMCALL_COND_WAIT) simcall_mutex = simcall_cond_wait__get__mutex(simcall); else simcall_mutex = simcall_cond_wait_timeout__get__mutex(simcall); simcall->call = SIMCALL_MUTEX_LOCK; - simcall_HANDLER_mutex_lock(simcall, simcall_mutex); + simcall_mutex->lock(simcall->issuer); } XBT_OUT(); } @@ -87,11 +87,8 @@ void ConditionVariableImpl::broadcast() signal(); } -void ConditionVariableImpl::wait(smx_mutex_t mutex, double timeout, smx_actor_t issuer, smx_simcall_t simcall) +void ConditionVariableImpl::wait(smx_mutex_t mutex, double timeout, actor::ActorImpl* issuer, smx_simcall_t simcall) { - XBT_IN("(%p, %p, %f, %p,%p)", this, mutex, timeout, issuer, simcall); - RawImplPtr synchro = nullptr; - XBT_DEBUG("Wait condition %p", this); /* If there is a mutex unlock it */ @@ -101,11 +98,11 @@ void ConditionVariableImpl::wait(smx_mutex_t mutex, double timeout, smx_actor_t mutex->unlock(issuer); } - synchro = RawImplPtr(new RawImpl())->start(issuer->get_host(), timeout); + RawImplPtr synchro(new RawImpl()); + (*synchro).set_host(issuer->get_host()).set_timeout(timeout).start(); synchro->simcalls_.push_front(simcall); - issuer->waiting_synchro = synchro; + issuer->waiting_synchro = std::move(synchro); sleeping_.push_back(*simcall->issuer); - XBT_OUT(); } // boost::intrusive_ptr support: