X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/993a22f9b7f34d3a536bfe6a49a31405461dea5d..2533f01016c86410b430bf2f242ed2ffec647e25:/src/s4u/s4u_Semaphore.cpp diff --git a/src/s4u/s4u_Semaphore.cpp b/src/s4u/s4u_Semaphore.cpp index b2482eda54..56a3bf1514 100644 --- a/src/s4u/s4u_Semaphore.cpp +++ b/src/s4u/s4u_Semaphore.cpp @@ -9,6 +9,7 @@ #include "simgrid/forward.h" #include "simgrid/s4u/Semaphore.hpp" #include "src/kernel/activity/SemaphoreImpl.hpp" +#include "src/kernel/actor/SimcallObserver.hpp" namespace simgrid { namespace s4u { @@ -21,12 +22,17 @@ SemaphorePtr Semaphore::create(unsigned int initial_capacity) void Semaphore::acquire() { - simcall_sem_acquire(pimpl_); + kernel::actor::ActorImpl* issuer = kernel::actor::ActorImpl::self(); + kernel::actor::SemAcquireSimcall observer{issuer, pimpl_}; + kernel::actor::simcall_blocking([&observer] { observer.get_sem()->acquire(observer.get_issuer(), -1.0); }, &observer); } bool Semaphore::acquire_timeout(double timeout) { - return simcall_sem_acquire_timeout(pimpl_, timeout); + kernel::actor::ActorImpl* issuer = kernel::actor::ActorImpl::self(); + kernel::actor::SemAcquireSimcall observer{issuer, pimpl_, timeout}; + return kernel::actor::simcall_blocking( + [&observer] { observer.get_sem()->acquire(observer.get_issuer(), observer.get_timeout()); }, &observer); } void Semaphore::release()