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
+RemotePtr<kernel::activity::CommImpl> Api::get_comm_wait_raw_addr(smx_simcall_t request) const
{
- return simcall_comm_wait__getraw__comm(request);
+ auto comm_addr = simgrid::simix::unmarshal_raw<simgrid::kernel::activity::CommImpl*>(request->args_[0]);
+ return RemotePtr<kernel::activity::CommImpl>(static_cast<kernel::activity::CommImpl*>(comm_addr));
}
kernel::activity::CommImpl* Api::get_comm_waitany_raw_addr(smx_simcall_t request, int value) const
// COMMUNICATION APIs
bool comm_addr_equal(const kernel::activity::CommImpl* comm_addr1, const kernel::activity::CommImpl* comm_addr2) 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;
+ RemotePtr<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(RemotePtr<kernel::activity::CommImpl> const& addr) const;
unsigned long get_pattern_comm_src_proc(RemotePtr<kernel::activity::CommImpl> const& addr) const;
break;
case CallType::WAIT:
case CallType::WAITANY: {
- simgrid::kernel::activity::CommImpl* comm_addr = nullptr;
+ RemotePtr<simgrid::kernel::activity::CommImpl> comm_addr;
if (call_type == CallType::WAIT)
comm_addr = api::get().get_comm_wait_raw_addr(req);
else
- comm_addr = api::get().get_comm_waitany_raw_addr(req, value);
+ comm_addr = remote(api::get().get_comm_waitany_raw_addr(req, value));
auto simcall_issuer = api::get().simcall_get_issuer(req);
- complete_comm_pattern(remote(comm_addr), simcall_issuer->get_pid(), backtracking);
+ complete_comm_pattern(comm_addr, simcall_issuer->get_pid(), backtracking);
} break;
default:
xbt_die("Unexpected call type %i", (int)call_type);