with CommImpl* type to APIs in mc_api (fasade layer). The mc_api calls RemotePtr and does
the required conversion.
-using simgrid::mc::remote;
using mcapi = simgrid::mc::mc_api;
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_comm_determinism, mc, "Logging specific to MC communication determinism detection");
using mcapi = simgrid::mc::mc_api;
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_comm_determinism, mc, "Logging specific to MC communication determinism detection");
}
static void update_comm_pattern(simgrid::mc::PatternCommunication* comm_pattern,
}
static void update_comm_pattern(simgrid::mc::PatternCommunication* comm_pattern,
- simgrid::mc::RemotePtr<simgrid::kernel::activity::CommImpl> comm_addr)
+ const simgrid::kernel::activity::CommImpl* comm_addr)
{
auto src_proc = mcapi::get().get_src_actor(comm_addr);
auto dst_proc = mcapi::get().get_dst_actor(comm_addr);
{
auto src_proc = mcapi::get().get_src_actor(comm_addr);
auto dst_proc = mcapi::get().get_dst_actor(comm_addr);
incomplete_communications_pattern[issuer->get_pid()].push_back(pattern.release());
}
incomplete_communications_pattern[issuer->get_pid()].push_back(pattern.release());
}
-void CommunicationDeterminismChecker::complete_comm_pattern(RemotePtr<kernel::activity::CommImpl> comm_addr,
+void CommunicationDeterminismChecker::complete_comm_pattern(const kernel::activity::CommImpl* comm_addr,
unsigned int issuer, int backtracking)
{
/* Complete comm pattern */
unsigned int issuer, int backtracking)
{
/* Complete comm pattern */
break;
case CallType::WAIT:
case CallType::WAITANY: {
break;
case CallType::WAIT:
case CallType::WAITANY: {
- simgrid::mc::RemotePtr<simgrid::kernel::activity::CommImpl> comm_addr{nullptr};
+ simgrid::kernel::activity::CommImpl* comm_addr = nullptr;
if (call_type == CallType::WAIT)
comm_addr = mcapi::get().get_comm_wait_raw_addr(req);
else
if (call_type == CallType::WAIT)
comm_addr = mcapi::get().get_comm_wait_raw_addr(req);
else
public:
// These are used by functions which should be moved in CommunicationDeterminismChecker:
void get_comm_pattern(smx_simcall_t request, CallType call_type, int backtracking);
public:
// These are used by functions which should be moved in CommunicationDeterminismChecker:
void get_comm_pattern(smx_simcall_t request, CallType call_type, int backtracking);
- void complete_comm_pattern(RemotePtr<kernel::activity::CommImpl> comm_addr, unsigned int issuer, int backtracking);
+ void complete_comm_pattern(const kernel::activity::CommImpl* comm_addr, unsigned int issuer, int backtracking);
private:
/** Stack representing the position in the exploration graph */
private:
/** Stack representing the position in the exploration graph */
state->communication_indices_.push_back(list_process_comm.index_comm);
}
state->communication_indices_.push_back(list_process_comm.index_comm);
}
-bool mc_api::comm_addr_equal(kernel::activity::CommImpl* comm_addr1, RemotePtr<kernel::activity::CommImpl> comm_addr2) const
+bool mc_api::comm_addr_equal(const kernel::activity::CommImpl* comm_addr1, const kernel::activity::CommImpl* comm_addr2) const
- return remote(comm_addr1) == comm_addr2;
+ return remote(comm_addr1) == remote(comm_addr2);
}
kernel::activity::CommImpl* mc_api::get_comm_isend_raw_addr(smx_simcall_t request) const
}
kernel::activity::CommImpl* mc_api::get_comm_isend_raw_addr(smx_simcall_t request) const
return static_cast<kernel::activity::CommImpl*>(comm_addr);
}
return static_cast<kernel::activity::CommImpl*>(comm_addr);
}
-simgrid::mc::RemotePtr<kernel::activity::CommImpl> mc_api::get_comm_wait_raw_addr(smx_simcall_t request) const
+kernel::activity::CommImpl* mc_api::get_comm_wait_raw_addr(smx_simcall_t request) const
- return remote(simcall_comm_wait__getraw__comm(request));
+ return simcall_comm_wait__getraw__comm(request);
-simgrid::mc::RemotePtr<kernel::activity::CommImpl> mc_api::get_comm_waitany_raw_addr(smx_simcall_t request, int value) const
+kernel::activity::CommImpl* mc_api::get_comm_waitany_raw_addr(smx_simcall_t request, int value) const
{
auto addr = mc_model_checker->get_remote_simulation().read(remote(simcall_comm_waitany__getraw__comms(request) + value));
{
auto addr = mc_model_checker->get_remote_simulation().read(remote(simcall_comm_waitany__getraw__comms(request) + value));
- return remote(static_cast<simgrid::kernel::activity::CommImpl*>(addr));
+ return static_cast<simgrid::kernel::activity::CommImpl*>(addr);
}
std::string mc_api::get_pattern_comm_rdv(void* addr) const
}
std::string mc_api::get_pattern_comm_rdv(void* addr) const
-std::vector<char> mc_api::get_pattern_comm_data(mc::RemotePtr<kernel::activity::CommImpl> const& comm_addr) const
+std::vector<char> mc_api::get_pattern_comm_data(const kernel::activity::CommImpl* comm_addr) const
{
simgrid::mc::Remote<simgrid::kernel::activity::CommImpl> temp_comm;
{
simgrid::mc::Remote<simgrid::kernel::activity::CommImpl> temp_comm;
- mc_model_checker->get_remote_simulation().read(temp_comm, comm_addr);
+ mc_model_checker->get_remote_simulation().read(temp_comm, remote((kernel::activity::CommImpl*)comm_addr));
const simgrid::kernel::activity::CommImpl* comm = temp_comm.get_buffer();
std::vector<char> buffer {};
const simgrid::kernel::activity::CommImpl* comm = temp_comm.get_buffer();
std::vector<char> buffer {};
return mpi_request.detached();
}
return mpi_request.detached();
}
-smx_actor_t mc_api::get_src_actor(mc::RemotePtr<kernel::activity::CommImpl> const& comm_addr) const
+smx_actor_t mc_api::get_src_actor(const kernel::activity::CommImpl* comm_addr) const
{
simgrid::mc::Remote<simgrid::kernel::activity::CommImpl> temp_comm;
{
simgrid::mc::Remote<simgrid::kernel::activity::CommImpl> temp_comm;
- mc_model_checker->get_remote_simulation().read(temp_comm, comm_addr);
+ mc_model_checker->get_remote_simulation().read(temp_comm, remote((kernel::activity::CommImpl*)comm_addr));
const simgrid::kernel::activity::CommImpl* comm = temp_comm.get_buffer();
auto src_proc = mc_model_checker->get_remote_simulation().resolve_actor(simgrid::mc::remote(comm->src_actor_.get()));
return src_proc;
}
const simgrid::kernel::activity::CommImpl* comm = temp_comm.get_buffer();
auto src_proc = mc_model_checker->get_remote_simulation().resolve_actor(simgrid::mc::remote(comm->src_actor_.get()));
return src_proc;
}
-smx_actor_t mc_api::get_dst_actor(mc::RemotePtr<kernel::activity::CommImpl> const& comm_addr) const
+smx_actor_t mc_api::get_dst_actor(const kernel::activity::CommImpl* comm_addr) const
{
simgrid::mc::Remote<simgrid::kernel::activity::CommImpl> temp_comm;
{
simgrid::mc::Remote<simgrid::kernel::activity::CommImpl> temp_comm;
- mc_model_checker->get_remote_simulation().read(temp_comm, comm_addr);
+ mc_model_checker->get_remote_simulation().read(temp_comm, remote((kernel::activity::CommImpl*)comm_addr));
const simgrid::kernel::activity::CommImpl* comm = temp_comm.get_buffer();
auto dst_proc = mc_model_checker->get_remote_simulation().resolve_actor(simgrid::mc::remote(comm->dst_actor_.get()));
const simgrid::kernel::activity::CommImpl* comm = temp_comm.get_buffer();
auto dst_proc = mc_model_checker->get_remote_simulation().resolve_actor(simgrid::mc::remote(comm->dst_actor_.get()));
// COMMUNICATION APIs
void copy_incomplete_comm_pattern(simgrid::mc::State* state) const;
void copy_index_comm_pattern(simgrid::mc::State* state) const;
// COMMUNICATION APIs
void copy_incomplete_comm_pattern(simgrid::mc::State* state) const;
void copy_index_comm_pattern(simgrid::mc::State* state) const;
- bool comm_addr_equal(kernel::activity::CommImpl* comm_addr1, RemotePtr<kernel::activity::CommImpl> comm_addr2) const;
+ 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;
kernel::activity::CommImpl* get_comm_isend_raw_addr(smx_simcall_t request) const;
- simgrid::mc::RemotePtr<kernel::activity::CommImpl> get_comm_wait_raw_addr(smx_simcall_t request) const;
- simgrid::mc::RemotePtr<kernel::activity::CommImpl> get_comm_waitany_raw_addr(smx_simcall_t request, int value) 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;
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::string get_pattern_comm_rdv(void* 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(mc::RemotePtr<kernel::activity::CommImpl> const& comm_addr) const;
+ std::vector<char> get_pattern_comm_data(const kernel::activity::CommImpl* comm_addr) const;
const char* get_actor_host_name(smx_actor_t actor) const;
bool check_send_request_detached(smx_simcall_t const& simcall) const;
const char* get_actor_host_name(smx_actor_t actor) const;
bool check_send_request_detached(smx_simcall_t const& simcall) const;
- smx_actor_t get_src_actor(mc::RemotePtr<kernel::activity::CommImpl> const& comm_addr) const;
- smx_actor_t get_dst_actor(mc::RemotePtr<kernel::activity::CommImpl> const& comm_addr) const;
+ smx_actor_t get_src_actor(const kernel::activity::CommImpl* comm_addr) const;
+ smx_actor_t get_dst_actor(const kernel::activity::CommImpl* comm_addr) const;
// REMOTE APIs
std::size_t get_remote_heap_bytes() const;
// REMOTE APIs
std::size_t get_remote_heap_bytes() const;