Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
get_comm_remote_addr() implemented
authoreazimi <azimi.ehsan@outlook.com>
Thu, 4 Feb 2021 17:42:57 +0000 (18:42 +0100)
committereazimi <azimi.ehsan@outlook.com>
Thu, 4 Feb 2021 17:42:57 +0000 (18:42 +0100)
src/mc/api.cpp
src/mc/api.hpp

index c49b889..e9ad235 100644 (file)
@@ -501,6 +501,23 @@ smx_mailbox_t Api::get_mbox_remote_addr(smx_simcall_t const req) const
   }
 }
 
+RemotePtr<kernel::activity::ActivityImpl> Api::get_comm_remote_addr(smx_simcall_t const req) const
+{
+  RemotePtr<kernel::activity::ActivityImpl> comm_addr;
+  switch (req->call_) {
+    case Simcall::COMM_ISEND:
+    case Simcall::COMM_IRECV: {
+      auto comm_addr_ptr = simgrid::simix::unmarshal_raw<simgrid::kernel::activity::ActivityImpl*>(req->result_);
+      comm_addr          = remote(comm_addr_ptr);
+      break;
+    }
+    default:
+      comm_addr = RemotePtr<kernel::activity::ActivityImpl>();
+      break;
+  }
+  return comm_addr;
+}
+
 bool Api::mc_is_null() const
 {
   auto is_null = (mc_model_checker == nullptr) ? true : false;
index d2782b4..949d3ec 100644 (file)
@@ -99,6 +99,7 @@ public:
   smx_actor_t simcall_get_issuer(s_smx_simcall const* req) const;
   long simcall_get_actor_id(s_smx_simcall const* req) const;
   smx_mailbox_t get_mbox_remote_addr(smx_simcall_t const req) const;
+  RemotePtr<kernel::activity::ActivityImpl> get_comm_remote_addr(smx_simcall_t const req) const;
   bool simcall_check_dependency(smx_simcall_t const req1, smx_simcall_t const req2) const;
 
 #if HAVE_SMPI