return mc_model_checker->get_remote_simulation().actors().size();
}
-void mc_api::copy_incomplete_comm_pattern(simgrid::mc::State* state) const
-{
- state->incomplete_comm_pattern_.clear();
- for (unsigned i=0; i < MC_smx_get_maxpid(); i++) {
- std::vector<simgrid::mc::PatternCommunication> res;
- for (auto const& comm : incomplete_communications_pattern[i])
- res.push_back(comm->dup());
- state->incomplete_comm_pattern_.push_back(std::move(res));
- }
-}
-
-void mc_api::copy_index_comm_pattern(simgrid::mc::State* state) const
-{
- state->communication_indices_.clear();
- for (auto const& list_process_comm : initial_communications_pattern)
- state->communication_indices_.push_back(list_process_comm.index_comm);
-}
-
bool mc_api::comm_addr_equal(const kernel::activity::CommImpl* comm_addr1, const kernel::activity::CommImpl* comm_addr2) const
{
return remote(comm_addr1) == remote(comm_addr2);
int get_actors_size() const;
// COMMUNICATION APIs
- void copy_incomplete_comm_pattern(simgrid::mc::State* state) const;
- void copy_index_comm_pattern(simgrid::mc::State* state) const;
bool comm_addr_equal(const kernel::activity::CommImpl* comm_addr1, const kernel::activity::CommImpl* comm_addr2) const;
kernel::activity::CommImpl* get_comm_isend_raw_addr(smx_simcall_t request) const;
kernel::activity::CommImpl* get_comm_wait_raw_addr(smx_simcall_t request) const;
#define SIMGRID_MC_COMM_PATTERN_H
#include <vector>
-
-#include "src/mc/mc_state.hpp"
+#include "src/mc/mc_pattern.hpp"
namespace simgrid {
namespace mc {
auto snapshot_ptr = mcapi::get().take_snapshot(num_);
system_state_ = std::shared_ptr<simgrid::mc::Snapshot>(snapshot_ptr);
if (_sg_mc_comms_determinism || _sg_mc_send_determinism) {
- mcapi::get().copy_incomplete_comm_pattern(this);
- mcapi::get().copy_index_comm_pattern(this);
+ copy_incomplete_comm_pattern();
+ copy_index_comm_pattern();
}
}
}
return this->transition_;
}
+void State::copy_incomplete_comm_pattern()
+{
+ incomplete_comm_pattern_.clear();
+ for (auto i=0; i < mcapi::get().get_maxpid(); i++) {
+ std::vector<simgrid::mc::PatternCommunication> res;
+ for (auto const& comm : incomplete_communications_pattern[i])
+ res.push_back(comm->dup());
+ incomplete_comm_pattern_.push_back(std::move(res));
+ }
+}
+
+void State::copy_index_comm_pattern()
+{
+ communication_indices_.clear();
+ for (auto const& list_process_comm : initial_communications_pattern)
+ this->communication_indices_.push_back(list_process_comm.index_comm);
+}
+
}
}
#include "src/mc/Transition.hpp"
#include "src/mc/sosp/Snapshot.hpp"
-#include "src/mc/mc_pattern.hpp"
+#include "src/mc/mc_comm_pattern.hpp"
namespace simgrid {
namespace mc {
this->actor_states_[actor->get_pid()].consider();
}
Transition get_transition() const;
+
+private:
+ void copy_incomplete_comm_pattern();
+ void copy_index_comm_pattern();
};
}
}