-/* Copyright (c) 2018-2022. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2018-2023. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
#include "src/kernel/actor/SynchroObserver.hpp"
#include "src/mc/mc_replay.hpp"
-namespace simgrid {
-namespace s4u {
+namespace simgrid::s4u {
SemaphorePtr Semaphore::create(unsigned int initial_capacity)
{
kernel::actor::ActorImpl* issuer = kernel::actor::ActorImpl::self();
if (MC_is_active() || MC_record_replay_is_active()) { // Split in 2 simcalls for transition persistency
- kernel::actor::SemaphoreObserver lock_observer{issuer, mc::Transition::Type::SEM_LOCK, pimpl_};
+ kernel::actor::SemaphoreObserver lock_observer{issuer, mc::Transition::Type::SEM_ASYNC_LOCK, pimpl_};
auto acquisition =
kernel::actor::simcall_answered([issuer, this] { return pimpl_->acquire_async(issuer); }, &lock_observer);
kernel::actor::SemaphoreAcquisitionObserver wait_observer{issuer, mc::Transition::Type::SEM_WAIT, acquisition.get(),
timeout};
- return kernel::actor::simcall_blocking(
- [issuer, acquisition, timeout] { return acquisition->wait_for(issuer, timeout); }, &wait_observer);
+ return kernel::actor::simcall_blocking([issuer, acquisition, timeout] { acquisition->wait_for(issuer, timeout); },
+ &wait_observer);
} else { // Do it in one simcall only and without observer
kernel::actor::SemaphoreAcquisitionObserver observer{issuer, mc::Transition::Type::SEM_WAIT, nullptr, timeout};
return kernel::actor::simcall_blocking(
- [this, issuer, timeout] { return pimpl_->acquire_async(issuer)->wait_for(issuer, timeout); }, &observer);
+ [this, issuer, timeout] { pimpl_->acquire_async(issuer)->wait_for(issuer, timeout); }, &observer);
}
}
intrusive_ptr_release(sem->pimpl_);
}
-} // namespace s4u
-} // namespace simgrid
+} // namespace simgrid::s4u
/* **************************** Public C interface *************************** */
/** @brief creates a semaphore object of the given initial capacity */