X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/9e8ba3861df85d86342342252be58cd546df2d08..6d6ee3cd05fd81d6eca0b61ad21bf2912dad51b2:/src/mc/mc_state.h diff --git a/src/mc/mc_state.h b/src/mc/mc_state.h index 957a08004b..599b0cb785 100644 --- a/src/mc/mc_state.h +++ b/src/mc/mc_state.h @@ -17,6 +17,7 @@ #include "src/simix/smx_private.h" #include "src/mc/mc_snapshot.h" #include "src/mc/mc_record.h" +#include "src/mc/Transition.hpp" namespace simgrid { namespace mc { @@ -103,40 +104,25 @@ public: } }; -/* An exploration state. - * - * The `executed_state` is sometimes transformed into another `internal_req`. - * For example WAITANY is transformes into a WAIT and TESTANY into TEST. - * See `MC_state_get_request_for_process()`. +/* A node in the exploration graph (kind-of) */ struct XBT_PRIVATE State { /** Sequential state number (used for debugging) */ int num = 0; - /* Next transition to explore for this communication - * - * Some transitions are not deterministic such as: - * - * * waitany which can receive different messages; - * - * * random which can produce different values. - * - * This variable is used to keep track of which transition - * should be explored next for a given simcall. - */ - int req_num = 0; - /** State's exploration status by process */ std::vector processStates; - /** The simcall */ + Transition transition; + + /** The simcall which was executed */ s_smx_simcall_t executed_req; /* Internal translation of the simcall * - * IMCALL_COMM_TESTANY is translated to a SIMCALL_COMM_TEST - * and SIMCALL_COMM_WAITANY to a SIMCALL_COMM_WAIT. + * SIMCALL_COMM_TESTANY is translated to a SIMCALL_COMM_TEST + * and SIMCALL_COMM_WAITANY to a SIMCALL_COMM_WAIT. */ s_smx_simcall_t internal_req; @@ -157,7 +143,7 @@ struct XBT_PRIVATE State { { this->processStates[process->pid].interleave(); } - RecordTraceElement getRecordElement() const; + Transition getTransition() const; }; XBT_PRIVATE void replay(std::list> const& stack); @@ -165,7 +151,7 @@ XBT_PRIVATE void replay(std::list> const& st } } -XBT_PRIVATE simgrid::mc::State* MC_state_new(void); -XBT_PRIVATE smx_simcall_t MC_state_get_request(simgrid::mc::State* state, int *value); +XBT_PRIVATE simgrid::mc::State* MC_state_new(unsigned long state_number); +XBT_PRIVATE smx_simcall_t MC_state_get_request(simgrid::mc::State* state); #endif