- if (not this->locked)
- THROWF(mismatch_error, 0, "Cannot release that mutex: it was not locked.");
-
- /* If the mutex is not owned by the issuer, that's not good */
- if (issuer != this->owner)
- THROWF(mismatch_error, 0, "Cannot release that mutex: it was locked by %s (pid:%ld), not by you.",
- this->owner->get_cname(), this->owner->get_pid());
-
- if (not this->sleeping.empty()) {
- /*process to wake up */
- smx_actor_t p = &this->sleeping.front();
- this->sleeping.pop_front();
- p->waiting_synchro = nullptr;
- this->owner = p;
- SIMIX_simcall_answer(&p->simcall);
- } else {
- /* nobody to wake up */
- this->locked = false;
- this->owner = nullptr;
- }
- XBT_OUT();
-}
-/** Increase the refcount for this mutex */
-MutexImpl* MutexImpl::ref()
-{
- intrusive_ptr_add_ref(this);
- return this;
-}
-
-/** Decrease the refcount for this mutex */
-void MutexImpl::unref()
-{
- intrusive_ptr_release(this);
-}
+ xbt_assert(issuer == owner_, "Cannot release that mutex: you're not the owner. %s is (pid:%ld).",
+ owner_ != nullptr ? owner_->get_cname() : "(nobody)", owner_ != nullptr ? owner_->get_pid() : -1);