X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/73646ee1826e59cb556293c0f77a2e1a453b4a34..3bf8dd63803f44adc6ef0fd84474b515b5df960c:/src/mc/mc_api.cpp diff --git a/src/mc/mc_api.cpp b/src/mc/mc_api.cpp index cbb995dc54..3d37b20d42 100644 --- a/src/mc/mc_api.cpp +++ b/src/mc/mc_api.cpp @@ -205,6 +205,11 @@ unsigned long mc_api::get_maxpid() const return MC_smx_get_maxpid(); } +int mc_api::get_actors_size() const +{ + return mc_model_checker->get_remote_simulation().actors().size(); +} + void mc_api::copy_incomplete_comm_pattern(const simgrid::mc::State* state) const { MC_state_copy_incomplete_communications_pattern((simgrid::mc::State*)state); @@ -266,12 +271,55 @@ std::vector mc_api::get_pattern_comm_data(void* addr) const return buffer; } +std::vector mc_api::get_pattern_comm_data(mc::RemotePtr const& comm_addr) const +{ + simgrid::mc::Remote temp_comm; + mc_model_checker->get_remote_simulation().read(temp_comm, comm_addr); + const simgrid::kernel::activity::CommImpl* comm = temp_comm.get_buffer(); + + std::vector buffer {}; + if (comm->src_buff_ != nullptr) { + buffer.resize(comm->src_buff_size_); + mc_model_checker->get_remote_simulation().read_bytes(buffer.data(), buffer.size(), + remote(comm->src_buff_)); + } + return buffer; +} + const char* mc_api::get_actor_host_name(smx_actor_t actor) const { const char* host_name = MC_smx_actor_get_host_name(actor); return host_name; } +bool mc_api::check_send_request_detached(smx_simcall_t const& simcall) const +{ + simgrid::smpi::Request mpi_request; + mc_model_checker->get_remote_simulation().read( + &mpi_request, remote(static_cast(simcall_comm_isend__get__data(simcall)))); + return mpi_request.detached(); +} + +smx_actor_t mc_api::get_src_actor(mc::RemotePtr const& comm_addr) const +{ + simgrid::mc::Remote temp_comm; + mc_model_checker->get_remote_simulation().read(temp_comm, 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; +} + +smx_actor_t mc_api::get_dst_actor(mc::RemotePtr const& comm_addr) const +{ + simgrid::mc::Remote temp_comm; + mc_model_checker->get_remote_simulation().read(temp_comm, 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())); + return dst_proc; +} + std::size_t mc_api::get_remote_heap_bytes() const { RemoteSimulation& process = mc_model_checker->get_remote_simulation(); @@ -413,6 +461,11 @@ int mc_api::get_smpi_request_tag(smx_simcall_t const& simcall, simgrid::simix::S } #endif +void mc_api::restore_state(std::shared_ptr system_state) const +{ + system_state->restore(&mc_model_checker->get_remote_simulation()); +} + bool mc_api::snapshot_equal(const Snapshot* s1, const Snapshot* s2) const { return simgrid::mc::snapshot_equal(s1, s2); @@ -429,7 +482,7 @@ void mc_api::s_close() const session->close(); } -void mc_api::s_restore_initial_state() const +void mc_api::restore_initial_state() const { session->restore_initial_state(); } @@ -439,7 +492,7 @@ void mc_api::execute(Transition const& transition) session->execute(transition); } -void mc_api::s_log_state() const +void mc_api::log_state() const { session->log_state(); }