X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/1a64ca4c11a1eb7ba2ecd102f877ac571486a034..42ec07cc0c4fb24df86b22c97bfbeab2f0a21c8e:/src/kernel/activity/ActivityImpl.cpp diff --git a/src/kernel/activity/ActivityImpl.cpp b/src/kernel/activity/ActivityImpl.cpp index 6c26b6386c..b8b2eae219 100644 --- a/src/kernel/activity/ActivityImpl.cpp +++ b/src/kernel/activity/ActivityImpl.cpp @@ -7,6 +7,7 @@ #include "simgrid/modelchecker.h" #include "src/mc/mc_replay.hpp" #include "src/simix/smx_private.hpp" +#include #include // isfinite() XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(simix_process); @@ -27,6 +28,14 @@ void ActivityImpl::register_simcall(smx_simcall_t simcall) simcall->issuer_->waiting_synchro_ = this; } +void ActivityImpl::unregister_simcall(smx_simcall_t simcall) +{ + // Remove the first occurrence of simcall: + auto j = boost::range::find(simcalls_, simcall); + if (j != simcalls_.end()) + simcalls_.erase(j); +} + void ActivityImpl::clean_action() { if (surf_action_) { @@ -63,7 +72,7 @@ void ActivityImpl::wait_for(actor::ActorImpl* issuer, double timeout) register_simcall(&issuer->simcall_); if (MC_is_active() || MC_record_replay_is_active()) { - int idx = SIMCALL_GET_MC_VALUE(issuer->simcall_); + int idx = issuer->simcall_.mc_value_; if (idx == 0) { state_ = simgrid::kernel::activity::State::DONE; } else {