Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
RemotePtr as the input parameter type in get_pattern_comm_data()
authoreazimi <azimi.ehsan@outlook.com>
Wed, 27 Jan 2021 13:20:42 +0000 (14:20 +0100)
committereazimi <azimi.ehsan@outlook.com>
Wed, 27 Jan 2021 13:20:42 +0000 (14:20 +0100)
src/mc/api.cpp
src/mc/api.hpp
src/mc/checker/CommunicationDeterminismChecker.cpp

index c164baa..708f537 100644 (file)
@@ -378,24 +378,10 @@ unsigned long Api::get_pattern_comm_dst_proc(void* addr) const
   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{};
index 0a3e117..df4031e 100644 (file)
@@ -62,8 +62,7 @@ public:
   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;
index 678544e..96fb904 100644 (file)
@@ -120,8 +120,10 @@ static void update_comm_pattern(simgrid::mc::PatternCommunication* comm_pattern,
   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 {
@@ -198,7 +200,7 @@ void CommunicationDeterminismChecker::get_comm_pattern(smx_simcall_t request, Ca
 #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);