X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b6a6893f1834bfbdf110e501a519a5be61e08347..4b95f054f8e620b68676f19b9db38002889538c6:/src/mc/mc_state.h diff --git a/src/mc/mc_state.h b/src/mc/mc_state.h index 5534a570c3..95e1af979c 100644 --- a/src/mc/mc_state.h +++ b/src/mc/mc_state.h @@ -22,6 +22,43 @@ namespace mc { extern XBT_PRIVATE std::unique_ptr initial_global_state; +struct PatternCommunication { + int num = 0; + smx_synchro_t comm_addr; + e_smx_comm_type_t type = SIMIX_COMM_SEND; + unsigned long src_proc = 0; + unsigned long dst_proc = 0; + const char *src_host = nullptr; + const char *dst_host = nullptr; + std::string rdv; + std::vector data; + int tag = 0; + int index = 0; + + PatternCommunication() + { + std::memset(&comm_addr, 0, sizeof(comm_addr)); + } + + PatternCommunication dup() const + { + simgrid::mc::PatternCommunication res; + // num? + res.comm_addr = this->comm_addr; + res.type = this->type; + // src_proc? + // dst_proc? + res.dst_proc = this->dst_proc; + res.dst_host = this->dst_host; + res.rdv = this->rdv; + res.data = this->data; + // tag? + res.index = this->index; + return res; + } + +}; + /* Possible exploration status of a process in a state */ enum class ProcessInterleaveState { no_interleave=0, /* Do not interleave (do not execute) */ @@ -66,18 +103,12 @@ struct XBT_PRIVATE State { int in_visited_states = 0; // comm determinism verification (xbt_dynar_t): - xbt_dynar_t incomplete_comm_pattern = nullptr; + std::vector> incomplete_comm_pattern; // For communication determinism verification: std::vector communicationIndices; State(); - ~State(); - - State(State const&) = delete; - State operator=(State const&) = delete; - State(State const&&) = delete; - State operator=(State const&&) = delete; std::size_t interleaveSize() const; };