X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/11ce6b59ec29ed55d422a0c97a7d734ac1eb7a39..98d2f4bc9ec0e7394f0c0e54f378353081193efe:/src/mc/mc_state.h diff --git a/src/mc/mc_state.h b/src/mc/mc_state.h index 90706daa4b..3fb62da892 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) */ @@ -65,14 +102,13 @@ struct XBT_PRIVATE State { int num = 0; int in_visited_states = 0; - // comm determinism verification (xbt_dynar_t): - xbt_dynar_t incomplete_comm_pattern = nullptr; + // comm determinism verification (xbt_dynar_t): + std::vector> incomplete_comm_pattern; // For communication determinism verification: std::vector communicationIndices; State(); - ~State(); std::size_t interleaveSize() const; }; @@ -88,6 +124,5 @@ XBT_PRIVATE void MC_state_set_executed_request(simgrid::mc::State* state, smx_si XBT_PRIVATE smx_simcall_t MC_state_get_executed_request(simgrid::mc::State* state, int *value); XBT_PRIVATE smx_simcall_t MC_state_get_internal_request(simgrid::mc::State* state); XBT_PRIVATE smx_simcall_t MC_state_get_request(simgrid::mc::State* state, int *value); -XBT_PRIVATE void MC_state_remove_interleave_process(simgrid::mc::State* state, smx_process_t process); #endif