X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/418ac8d537f356100767b8a21f65e16f7ba1d986..c620ebc670a6dd5c6605e643fb4cbc7e61b991d4:/src/simix/Synchro.h diff --git a/src/simix/Synchro.h b/src/simix/Synchro.h index b55a2b9a4f..1d7e83e2d0 100644 --- a/src/simix/Synchro.h +++ b/src/simix/Synchro.h @@ -5,6 +5,10 @@ #ifndef _SIMIX_SYNCHRO_HPP #define _SIMIX_SYNCHRO_HPP + +#include + +#include #include "simgrid/forward.h" #ifdef __cplusplus @@ -14,14 +18,23 @@ namespace simgrid { namespace simix { - class Synchro { + XBT_PUBLIC_CLASS Synchro { public: Synchro(); virtual ~Synchro(); e_smx_state_t state; /* State of the synchro */ - char *name; /* synchro name if any */ + std::string name; /* synchro name if any */ xbt_fifo_t simcalls; /* List of simcalls waiting for this synchro */ char *category = nullptr; /* For instrumentation */ + + virtual void suspend()=0; + virtual void resume()=0; + virtual void post() =0; // What to do when a simcall terminates + + void ref(); + void unref(); + private: + int refcount=1; }; }} // namespace simgrid::simix #else /* not C++ */