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
// 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;
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);
#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);