return src_proc;
}
-std::vector<char> Api::get_pattern_comm_data(void* addr) const
-{
- Remote<kernel::activity::CommImpl> temp_synchro;
- mc_model_checker->get_remote_simulation().read(temp_synchro, remote((simgrid::kernel::activity::CommImpl*)addr));
- const kernel::activity::CommImpl* synchro = temp_synchro.get_buffer();
-
- std::vector<char> buffer{};
- if (synchro->src_buff_ != nullptr) {
- buffer.resize(synchro->src_buff_size_);
- mc_model_checker->get_remote_simulation().read_bytes(buffer.data(), buffer.size(), remote(synchro->src_buff_));
- }
- return buffer;
-}
-
-std::vector<char> Api::get_pattern_comm_data(const kernel::activity::CommImpl* comm_addr) const
+std::vector<char> Api::get_pattern_comm_data(RemotePtr<kernel::activity::CommImpl> const& addr) const
{
simgrid::mc::Remote<simgrid::kernel::activity::CommImpl> temp_comm;
- mc_model_checker->get_remote_simulation().read(temp_comm, remote((kernel::activity::CommImpl*)comm_addr));
+ mc_model_checker->get_remote_simulation().read(temp_comm, remote((addr.local())));
const simgrid::kernel::activity::CommImpl* comm = temp_comm.get_buffer();
std::vector<char> buffer{};
std::string get_pattern_comm_rdv(RemotePtr<kernel::activity::CommImpl> const& addr) const;
unsigned long get_pattern_comm_src_proc(void* addr) const;
unsigned long get_pattern_comm_dst_proc(void* addr) const;
- std::vector<char> get_pattern_comm_data(void* addr) const;
- std::vector<char> get_pattern_comm_data(const kernel::activity::CommImpl* comm_addr) const;
+ std::vector<char> get_pattern_comm_data(RemotePtr<kernel::activity::CommImpl> const& addr) const;
const char* get_actor_host_name(smx_actor_t actor) const;
#if HAVE_SMPI
bool check_send_request_detached(smx_simcall_t const& simcall) const;
comm_pattern->src_host = api::get().get_actor_host_name(src_proc);
comm_pattern->dst_host = api::get().get_actor_host_name(dst_proc);
- if (comm_pattern->data.empty())
- comm_pattern->data = api::get().get_pattern_comm_data(comm_addr);
+ if (comm_pattern->data.empty()) {
+ auto comm = const_cast<simgrid::kernel::activity::CommImpl*>(comm_addr);
+ comm_pattern->data = api::get().get_pattern_comm_data(simgrid::mc::remote(comm));
+ }
}
namespace simgrid {
#if HAVE_SMPI
pattern->tag = api::get().get_smpi_request_tag(request, simgrid::simix::Simcall::COMM_ISEND);
#endif
- pattern->data = api::get().get_pattern_comm_data(pattern->comm_addr);
+ pattern->data = api::get().get_pattern_comm_data(remote(pattern->comm_addr));
#if HAVE_SMPI
auto send_detached = api::get().check_send_request_detached(request);