X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/9982931b79fc759f03b6bce04f15aa9b5cd3d57d..9692d43fa911bdc2d6d0263a3cb3e22d5e3167fe:/src/mc/mc_state.h diff --git a/src/mc/mc_state.h b/src/mc/mc_state.h index fbff700820..371d24843a 100644 --- a/src/mc/mc_state.h +++ b/src/mc/mc_state.h @@ -15,18 +15,28 @@ #include #include "src/simix/smx_private.h" +#include "src/kernel/activity/SynchroIo.hpp" +#include "src/kernel/activity/SynchroComm.hpp" +#include "src/kernel/activity/SynchroRaw.hpp" +#include "src/kernel/activity/SynchroSleep.hpp" +#include "src/kernel/activity/SynchroExec.hpp" #include "src/mc/mc_snapshot.h" #include "src/mc/mc_record.h" +#include "src/mc/Transition.hpp" namespace simgrid { namespace mc { -extern XBT_PRIVATE std::unique_ptr initial_global_state; +enum class PatternCommunicationType { + none = 0, + send = 1, + receive = 2, +}; struct PatternCommunication { int num = 0; - smx_synchro_t comm_addr; - e_smx_comm_type_t type = SIMIX_COMM_SEND; + smx_activity_t comm_addr; + PatternCommunicationType type = PatternCommunicationType::send; unsigned long src_proc = 0; unsigned long dst_proc = 0; const char *src_host = nullptr; @@ -110,19 +120,11 @@ struct XBT_PRIVATE State { /** Sequential state number (used for debugging) */ int num = 0; - /* Which transition was executed for this simcall - * - * Some simcalls can lead to different transitions: - * - * * waitany/testany can trigger on different messages; - * - * * random can produce different values. - */ - int req_num = 0; - /** State's exploration status by process */ std::vector processStates; + Transition transition; + /** The simcall which was executed */ s_smx_simcall_t executed_req; @@ -134,7 +136,7 @@ struct XBT_PRIVATE State { s_smx_simcall_t internal_req; /* Can be used as a copy of the remote synchro object */ - s_smx_synchro_t internal_comm; + simgrid::mc::Remote internal_comm; /** Snapshot of system state (if needed) */ std::shared_ptr system_state; @@ -146,19 +148,17 @@ struct XBT_PRIVATE State { State(); std::size_t interleaveSize() const; - void interleave(smx_process_t process) + void interleave(smx_actor_t process) { this->processStates[process->pid].interleave(); } - RecordTraceElement getRecordElement() const; + Transition getTransition() const; }; -XBT_PRIVATE void replay(std::list> const& stack); - } } -XBT_PRIVATE simgrid::mc::State* MC_state_new(void); +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