X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d78a7f87e28a15c0f1e71e4510a055554e0e5e9b..dd1e9629153b9896cbceffc1dec401b6151839ab:/src/kernel/activity/MutexImpl.cpp diff --git a/src/kernel/activity/MutexImpl.cpp b/src/kernel/activity/MutexImpl.cpp index 2930115ed9..6e79db7910 100644 --- a/src/kernel/activity/MutexImpl.cpp +++ b/src/kernel/activity/MutexImpl.cpp @@ -6,18 +6,18 @@ #include "src/kernel/activity/MutexImpl.hpp" #include "src/kernel/activity/SynchroRaw.hpp" -XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_mutex, simix_synchro, "Mutex kernel-space implementation"); - #if SIMGRID_HAVE_MC #include "simgrid/modelchecker.h" #include "src/mc/mc_safety.hpp" #define MC_CHECK_NO_DPOR() \ - xbt_assert(not MC_is_active() || simgrid::mc::reduction_mode != simgrid::mc::ReductionMode::dpor, \ + xbt_assert(not MC_is_active() || mc::reduction_mode != mc::ReductionMode::dpor, \ "Mutex is currently not supported with DPOR, use --cfg=model-check/reduction:none") #else #define MC_CHECK_NO_DPOR() (void)0 #endif +XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_mutex, simix_synchro, "Mutex kernel-space implementation"); + namespace simgrid { namespace kernel { namespace activity { @@ -26,16 +26,13 @@ void MutexImpl::lock(actor::ActorImpl* issuer) { XBT_IN("(%p; %p)", this, issuer); MC_CHECK_NO_DPOR(); - /* FIXME: check where to validate the arguments */ - RawImplPtr synchro = nullptr; if (locked_) { /* FIXME: check if the host is active ? */ /* Somebody using the mutex, use a synchronization to get host failures */ - synchro = RawImplPtr(new RawImpl([this, issuer]() { this->remove_sleeping_actor(*issuer); })); + RawImplPtr synchro(new RawImpl([this, issuer]() { this->remove_sleeping_actor(*issuer); })); (*synchro).set_host(issuer->get_host()).start(); - synchro->simcalls_.push_back(&issuer->simcall_); - issuer->waiting_synchro_ = synchro; + synchro->register_simcall(&issuer->simcall_); sleeping_.push_back(*issuer); } else { /* mutex free */