From: Fred Suter Date: Sun, 4 Jun 2023 18:52:18 +0000 (-0400) Subject: fire on_start for one-sided communication instead of on_send/recv X-Git-Tag: v3.34~69 X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/a76f57e9960e91af9f698cea58c4993fae50e8c4 fire on_start for one-sided communication instead of on_send/recv --- diff --git a/src/instr/instr_platform.cpp b/src/instr/instr_platform.cpp index 5ea76ef035..94b95e30a0 100644 --- a/src/instr/instr_platform.cpp +++ b/src/instr/instr_platform.cpp @@ -525,19 +525,18 @@ void define_callbacks() Container::by_name(c.get_destination()->get_name())->get_state("HOST_STATE")->pop_event(); } }); - s4u::Comm::on_send_cb([](s4u::Comm const& c) { + s4u::Comm::on_start_cb([](s4u::Comm const& c) { std::string pid = instr_pid(*s4u::Actor::self()); - if (pid == "-0") //Comm is launched directly by Maestro, use the host as container - Container::by_name(c.get_source()->get_name())->get_state("HOST_STATE")->push_event("send"); - else - Container::by_name(pid)->get_state("ACTOR_STATE")->push_event("send"); + if (pid == "-0") { //Comm is launched directly by Maestro, use the host as container + Container::by_name(c.get_source()->get_name())->get_state("HOST_STATE")->push_event("start"); + Container::by_name(c.get_destination()->get_name())->get_state("HOST_STATE")->push_event("start"); + } + }); + s4u::Comm::on_send_cb([](s4u::Comm const& c) { + Container::by_name(instr_pid(*s4u::Actor::self()))->get_state("ACTOR_STATE")->push_event("send"); }); s4u::Comm::on_recv_cb([](s4u::Comm const& c) { - std::string pid = instr_pid(*s4u::Actor::self()); - if (pid == "-0") //Comm is launched directly by Maestro, use the host as container - Container::by_name(c.get_destination()->get_name())->get_state("HOST_STATE")->push_event("receive"); - else - Container::by_name(pid)->get_state("ACTOR_STATE")->push_event("receive"); + Container::by_name(instr_pid(*s4u::Actor::self()))->get_state("ACTOR_STATE")->push_event("receive"); }); s4u::Actor::on_host_change_cb(on_actor_host_change); } diff --git a/src/s4u/s4u_Comm.cpp b/src/s4u/s4u_Comm.cpp index 47a3de687f..f7bfc9e1b1 100644 --- a/src/s4u/s4u_Comm.cpp +++ b/src/s4u/s4u_Comm.cpp @@ -314,10 +314,8 @@ Comm* Comm::do_start() xbt_assert(src_buff_ == nullptr && dst_buff_ == nullptr, "Direct host-to-host communications cannot carry any data."); XBT_DEBUG("host-to-host Comm. Pimpl already created and set, just start it."); - on_send(*this); - on_this_send(*this); - on_recv(*this); - on_this_recv(*this); + on_start(*this); + on_this_start(*this); kernel::actor::simcall_answered([this] { pimpl_->set_state(kernel::activity::State::READY); boost::static_pointer_cast(pimpl_)->start();