X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b8253e68725ba0f4f15a07fd04bf2ed2b12236c8..29379a85ce9802fd3174f4237b57d240a704cb45:/src/s4u/s4u_Barrier.cpp diff --git a/src/s4u/s4u_Barrier.cpp b/src/s4u/s4u_Barrier.cpp index 482a16426d..d19fb26337 100644 --- a/src/s4u/s4u_Barrier.cpp +++ b/src/s4u/s4u_Barrier.cpp @@ -6,21 +6,19 @@ #include #include -#include -#include - +#include "simgrid/Exception.hpp" +#include "simgrid/barrier.h" #include "simgrid/s4u/Barrier.hpp" #include "simgrid/simix.h" +#include "xbt/log.hpp" XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_barrier, "S4U barrier"); namespace simgrid { namespace s4u { -Barrier::Barrier(unsigned int count) : expected_processes_(count) +Barrier::Barrier(unsigned int expected_processes) : mutex_(Mutex::create()), cond_(ConditionVariable::create()), expected_processes_(expected_processes) { - mutex_ = Mutex::create(); - cond_ = ConditionVariable::create(); } /** @@ -44,3 +42,22 @@ int Barrier::wait() } } // namespace s4u } // namespace simgrid + +/* **************************** Public C interface *************************** */ + +sg_bar_t sg_barrier_init(unsigned int count) +{ + return new simgrid::s4u::Barrier(count); +} + +/** @brief Initializes a barrier, with count elements */ +void sg_barrier_destroy(sg_bar_t bar) +{ + delete bar; +} + +/** @brief Performs a barrier already initialized */ +int sg_barrier_wait(sg_bar_t bar) +{ + return bar->wait(); +}