Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
defusing
authoreazimi <azimi.ehsan@outlook.com>
Wed, 27 Jan 2021 11:48:55 +0000 (12:48 +0100)
committereazimi <azimi.ehsan@outlook.com>
Wed, 27 Jan 2021 11:48:55 +0000 (12:48 +0100)
src/mc/api.cpp
src/mc/api.hpp
src/mc/checker/CommunicationDeterminismChecker.cpp

index 318ffe7..22125a6 100644 (file)
@@ -328,10 +328,10 @@ bool Api::comm_addr_equal(const kernel::activity::CommImpl* comm_addr1,
   return remote(comm_addr1) == remote(comm_addr2);
 }
 
-kernel::activity::CommImpl* Api::get_comm_isend_raw_addr(smx_simcall_t request) const
+RemotePtr<kernel::activity::CommImpl> Api::get_comm_isend_raw_addr(smx_simcall_t request) const
 {
   auto comm_addr = simcall_comm_isend__getraw__result(request);
-  return static_cast<kernel::activity::CommImpl*>(comm_addr);
+  return RemotePtr<kernel::activity::CommImpl>(static_cast<kernel::activity::CommImpl*>(comm_addr));
 }
 
 kernel::activity::CommImpl* Api::get_comm_wait_raw_addr(smx_simcall_t request) const
index f77dc0b..bb672ea 100644 (file)
@@ -56,7 +56,7 @@ public:
 
   // COMMUNICATION APIs
   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;
+  RemotePtr<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;
   kernel::activity::CommImpl* get_comm_waitany_raw_addr(smx_simcall_t request, int value) const;
   std::string get_pattern_comm_rdv(void* addr) const;
index 644a8b3..979950c 100644 (file)
@@ -190,7 +190,7 @@ void CommunicationDeterminismChecker::get_comm_pattern(smx_simcall_t request, Ca
   if (call_type == CallType::SEND) {
     /* Create comm pattern */
     pattern->type      = PatternCommunicationType::send;
-    pattern->comm_addr = api::get().get_comm_isend_raw_addr(request);
+    pattern->comm_addr = api::get().get_comm_isend_raw_addr(request).local();
     pattern->rdv      = api::get().get_pattern_comm_rdv(pattern->comm_addr);
     pattern->src_proc = api::get().get_pattern_comm_src_proc(pattern->comm_addr);
     pattern->src_host = Api::get().get_actor_host_name(issuer);
@@ -216,7 +216,7 @@ void CommunicationDeterminismChecker::get_comm_pattern(smx_simcall_t request, Ca
 #endif
   } else if (call_type == CallType::RECV) {
     pattern->type = PatternCommunicationType::receive;
-    pattern->comm_addr = api::get().get_comm_isend_raw_addr(request);
+    pattern->comm_addr = api::get().get_comm_isend_raw_addr(request).local();
 
 #if HAVE_SMPI
     pattern->tag = api::get().get_smpi_request_tag(request, simgrid::simix::Simcall::COMM_IRECV);