From eadbe829389f23151f79257824f3164d7801bbc7 Mon Sep 17 00:00:00 2001 From: Arnaud Giersch Date: Mon, 18 Mar 2019 14:16:12 +0100 Subject: [PATCH] Use a reference as parameter for signal callbacks. Two benefits: * no more overhead for maintaining reference counting; * assurance that the given parameter is not null. Also use a const reference whenever possible. --- .../s4u/actor-exiting/s4u-actor-exiting.cpp | 2 +- include/simgrid/kernel/routing/NetPoint.hpp | 2 +- include/simgrid/s4u/Actor.hpp | 16 +-- include/simgrid/s4u/Comm.hpp | 6 +- include/simgrid/s4u/Exec.hpp | 4 +- include/simgrid/s4u/Host.hpp | 6 +- include/simgrid/s4u/Link.hpp | 10 +- include/simgrid/s4u/NetZone.hpp | 6 +- include/simgrid/s4u/Storage.hpp | 4 +- include/simgrid/s4u/VirtualMachine.hpp | 14 +-- src/instr/instr_platform.cpp | 110 +++++++++--------- src/instr/instr_private.hpp | 2 +- src/kernel/activity/ActivityImpl.cpp | 8 +- src/kernel/activity/ActivityImpl.hpp | 4 +- src/kernel/activity/ExecImpl.cpp | 14 +-- src/kernel/activity/ExecImpl.hpp | 6 +- src/kernel/activity/IoImpl.cpp | 8 +- src/kernel/activity/IoImpl.hpp | 4 +- src/kernel/actor/ActorImpl.cpp | 7 +- src/kernel/routing/NetPoint.cpp | 4 +- src/msg/msg_global.cpp | 8 +- src/msg/msg_process.cpp | 4 +- src/msg/msg_task.cpp | 4 +- src/plugins/dirty_page_tracking.cpp | 28 ++--- src/plugins/host_dvfs.cpp | 34 +++--- src/plugins/host_energy.cpp | 18 +-- src/plugins/host_load.cpp | 18 +-- src/plugins/link_energy.cpp | 24 ++-- src/plugins/vm/VirtualMachineImpl.cpp | 18 +-- src/plugins/vm/VirtualMachineImpl.hpp | 8 +- src/plugins/vm/VmLiveMigration.cpp | 2 +- src/plugins/vm/s4u_VirtualMachine.cpp | 14 +-- src/s4u/s4u_Actor.cpp | 32 ++--- src/s4u/s4u_Comm.cpp | 16 +-- src/s4u/s4u_Exec.cpp | 10 +- src/s4u/s4u_Host.cpp | 6 +- src/s4u/s4u_Link.cpp | 10 +- src/s4u/s4u_Netzone.cpp | 6 +- src/s4u/s4u_Storage.cpp | 4 +- src/simix/smx_global.cpp | 2 +- src/smpi/internals/smpi_global.cpp | 16 +-- src/smpi/plugins/ampi/ampi.cpp | 4 +- src/smpi/plugins/ampi/ampi.hpp | 4 +- src/smpi/plugins/sampi_loadbalancer.cpp | 9 +- src/surf/StorageImpl.cpp | 4 +- src/surf/StorageImpl.hpp | 2 +- src/surf/cpu_interface.cpp | 8 +- src/surf/cpu_interface.hpp | 5 +- src/surf/network_cm02.cpp | 2 +- src/surf/network_constant.cpp | 2 +- src/surf/network_ib.cpp | 22 ++-- src/surf/network_interface.cpp | 2 +- src/surf/network_ns3.cpp | 20 ++-- src/surf/sg_platf.cpp | 4 +- src/surf/xml/platf_private.hpp | 2 +- 55 files changed, 308 insertions(+), 301 deletions(-) diff --git a/examples/s4u/actor-exiting/s4u-actor-exiting.cpp b/examples/s4u/actor-exiting/s4u-actor-exiting.cpp index d24aab7ce1..9895d9f16d 100644 --- a/examples/s4u/actor-exiting/s4u-actor-exiting.cpp +++ b/examples/s4u/actor-exiting/s4u-actor-exiting.cpp @@ -51,7 +51,7 @@ int main(int argc, char* argv[]) /* Register a callback in the Actor::on_destruction signal. It will be called for every terminated actors */ simgrid::s4u::Actor::on_destruction.connect( - [](simgrid::s4u::ActorPtr actor) { XBT_INFO("Actor %s stops now", actor->get_cname()); }); + [](simgrid::s4u::Actor const& actor) { XBT_INFO("Actor %s stops now", actor.get_cname()); }); /* Create some actors */ simgrid::s4u::Actor::create("A", simgrid::s4u::Host::by_name("Tremblay"), actor_a); diff --git a/include/simgrid/kernel/routing/NetPoint.hpp b/include/simgrid/kernel/routing/NetPoint.hpp index 24b11488a3..0b239f7a87 100644 --- a/include/simgrid/kernel/routing/NetPoint.hpp +++ b/include/simgrid/kernel/routing/NetPoint.hpp @@ -40,7 +40,7 @@ public: bool is_host() const { return component_type_ == Type::Host; } bool is_router() const { return component_type_ == Type::Router; } - static simgrid::xbt::signal on_creation; + static simgrid::xbt::signal on_creation; bool operator<(const NetPoint& rhs) const { return name_ < rhs.name_; } diff --git a/include/simgrid/s4u/Actor.hpp b/include/simgrid/s4u/Actor.hpp index 28e5e37da0..e5f1878b23 100644 --- a/include/simgrid/s4u/Actor.hpp +++ b/include/simgrid/s4u/Actor.hpp @@ -145,23 +145,23 @@ public: static ActorPtr self(); /** Signal to others that a new actor has been created **/ - static xbt::signal on_creation; + static xbt::signal on_creation; /** Signal to others that an actor has been suspended**/ - static xbt::signal on_suspend; + static xbt::signal on_suspend; /** Signal to others that an actor has been resumed **/ - static xbt::signal on_resume; + static xbt::signal on_resume; /** Signal to others that an actor is sleeping **/ - static xbt::signal on_sleep; + static xbt::signal on_sleep; /** Signal to others that an actor wakes up for a sleep **/ - static xbt::signal on_wake_up; + static xbt::signal on_wake_up; /** Signal to others that an actor is going to migrated to another host**/ - static xbt::signal on_migration_start; + static xbt::signal on_migration_start; /** Signal to others that an actor is has been migrated to another host **/ - static xbt::signal on_migration_end; + static xbt::signal on_migration_end; /** Signal indicating that an actor is about to disappear. * This signal is fired for any dying actor, which is mostly useful when designing plugins and extensions. If you * want to register to the termination of a given actor, use this_actor::on_exit() instead.*/ - static xbt::signal on_destruction; + static xbt::signal on_destruction; /** Create an actor from a std::function * diff --git a/include/simgrid/s4u/Comm.hpp b/include/simgrid/s4u/Comm.hpp index 26e13992ef..439bf65459 100644 --- a/include/simgrid/s4u/Comm.hpp +++ b/include/simgrid/s4u/Comm.hpp @@ -44,9 +44,9 @@ public: virtual ~Comm(); - static xbt::signal on_sender_start; - static xbt::signal on_receiver_start; - static xbt::signal on_completion; + static xbt::signal on_sender_start; + static xbt::signal on_receiver_start; + static xbt::signal on_completion; /*! take a vector s4u::CommPtr and return when one of them is finished. * The return value is the rank of the first finished CommPtr. */ diff --git a/include/simgrid/s4u/Exec.hpp b/include/simgrid/s4u/Exec.hpp index beed7e1df8..5164ef6223 100644 --- a/include/simgrid/s4u/Exec.hpp +++ b/include/simgrid/s4u/Exec.hpp @@ -43,8 +43,8 @@ public: friend ExecPar; friend XBT_PUBLIC void intrusive_ptr_release(Exec* e); friend XBT_PUBLIC void intrusive_ptr_add_ref(Exec* e); - static xbt::signal on_start; - static xbt::signal on_completion; + static xbt::signal on_start; + static xbt::signal on_completion; virtual Exec* start() override = 0; virtual double get_remaining_ratio() = 0; diff --git a/include/simgrid/s4u/Host.hpp b/include/simgrid/s4u/Host.hpp index 844c8dd3eb..81a031ec9f 100644 --- a/include/simgrid/s4u/Host.hpp +++ b/include/simgrid/s4u/Host.hpp @@ -53,12 +53,12 @@ public: /*** Called on each newly created host */ static xbt::signal on_creation; /*** Called just before destructing a host */ - static xbt::signal on_destruction; + static xbt::signal on_destruction; /*** Called when the machine is turned on or off (called AFTER the change) */ - static xbt::signal on_state_change; + static xbt::signal on_state_change; /*** Called when the speed of the machine is changed (called AFTER the change) * (either because of a pstate switch or because of an external load event coming from the profile) */ - static xbt::signal on_speed_change; + static xbt::signal on_speed_change; virtual void destroy(); // No copy/move diff --git a/include/simgrid/s4u/Link.hpp b/include/simgrid/s4u/Link.hpp index 07b0e85e55..8a9c7235d6 100644 --- a/include/simgrid/s4u/Link.hpp +++ b/include/simgrid/s4u/Link.hpp @@ -101,19 +101,19 @@ public: static xbt::signal on_creation; /** @brief Callback signal fired when a Link is destroyed */ - static xbt::signal on_destruction; + static xbt::signal on_destruction; /** @brief Callback signal fired when the state of a Link changes (when it is turned on or off) */ - static xbt::signal on_state_change; + static xbt::signal on_state_change; /** @brief Callback signal fired when the bandwidth of a Link changes */ - static xbt::signal on_bandwidth_change; + static xbt::signal on_bandwidth_change; /** @brief Callback signal fired when a communication starts */ - static xbt::signal on_communicate; + static xbt::signal on_communicate; /** @brief Callback signal fired when a communication changes it state (ready/done/cancel) */ - static xbt::signal + static xbt::signal on_communication_state_change; #ifndef DOXYGEN diff --git a/include/simgrid/s4u/NetZone.hpp b/include/simgrid/s4u/NetZone.hpp index 3855348ddf..815b176f63 100644 --- a/include/simgrid/s4u/NetZone.hpp +++ b/include/simgrid/s4u/NetZone.hpp @@ -69,10 +69,10 @@ public: /*** Called on each newly created regular route (not on bypass routes) */ static xbt::signal& link_list)> + std::vector const& link_list)> on_route_creation; - static xbt::signal on_creation; - static xbt::signal on_seal; + static xbt::signal on_creation; + static xbt::signal on_seal; #ifndef DOXYGEN // Deprecation wrappers diff --git a/include/simgrid/s4u/Storage.hpp b/include/simgrid/s4u/Storage.hpp index 569a93ac62..1b5107b88a 100644 --- a/include/simgrid/s4u/Storage.hpp +++ b/include/simgrid/s4u/Storage.hpp @@ -39,9 +39,9 @@ public: /** @brief Callback signal fired when a new Storage is created */ static xbt::signal on_creation; /** @brief Callback signal fired when a Storage is destroyed */ - static xbt::signal on_destruction; + static xbt::signal on_destruction; /** @brief Callback signal fired when a Storage's state changes */ - static xbt::signal on_state_change; + static xbt::signal on_state_change; /** Retrieve a Storage by its name. It must exist in the platform file */ static Storage* by_name(const std::string& name); diff --git a/include/simgrid/s4u/VirtualMachine.hpp b/include/simgrid/s4u/VirtualMachine.hpp index 25f2e1b05e..4dd134d760 100644 --- a/include/simgrid/s4u/VirtualMachine.hpp +++ b/include/simgrid/s4u/VirtualMachine.hpp @@ -52,13 +52,13 @@ public: void set_bound(double bound); VirtualMachine::state get_state(); - static xbt::signal on_start; - static xbt::signal on_started; - static xbt::signal on_shutdown; - static xbt::signal on_suspend; - static xbt::signal on_resume; - static xbt::signal on_migration_start; - static xbt::signal on_migration_end; + static xbt::signal on_start; + static xbt::signal on_started; + static xbt::signal on_shutdown; + static xbt::signal on_suspend; + static xbt::signal on_resume; + static xbt::signal on_migration_start; + static xbt::signal on_migration_end; #ifndef DOXYGEN // Deprecated methods diff --git a/src/instr/instr_platform.cpp b/src/instr/instr_platform.cpp index 4bc1e2c8be..e2607795f8 100644 --- a/src/instr/instr_platform.cpp +++ b/src/instr/instr_platform.cpp @@ -155,7 +155,7 @@ static void recursiveGraphExtraction(simgrid::s4u::NetZone* netzone, container_t /* * Callbacks */ -static void instr_netzone_on_creation(simgrid::s4u::NetZone& netzone) +static void instr_netzone_on_creation(simgrid::s4u::NetZone const& netzone) { std::string id = netzone.get_name(); if (simgrid::instr::Container::get_root() == nullptr) { @@ -185,7 +185,7 @@ static void instr_netzone_on_creation(simgrid::s4u::NetZone& netzone) } } -static void instr_link_on_creation(simgrid::s4u::Link& link) +static void instr_link_on_creation(simgrid::s4u::Link const& link) { if (currentContainer.empty()) // No ongoing parsing. Are you creating the loopback? return; @@ -205,7 +205,7 @@ static void instr_link_on_creation(simgrid::s4u::Link& link) } } -static void instr_host_on_creation(simgrid::s4u::Host& host) +static void instr_host_on_creation(simgrid::s4u::Host const& host) { container_t container = new simgrid::instr::HostContainer(host, currentContainer.back()); container_t root = simgrid::instr::Container::get_root(); @@ -232,48 +232,48 @@ static void instr_host_on_creation(simgrid::s4u::Host& host) } } -static void instr_host_on_speed_change(simgrid::s4u::Host& host) +static void instr_host_on_speed_change(simgrid::s4u::Host const& host) { simgrid::instr::Container::by_name(host.get_name()) ->get_variable("speed") ->set_event(surf_get_clock(), host.get_core_count() * host.get_available_speed()); } -static void instr_action_on_state_change(simgrid::kernel::resource::Action* action, +static void instr_action_on_state_change(simgrid::kernel::resource::Action const& action, simgrid::kernel::resource::Action::State /* previous */) { - int n = action->get_variable()->get_number_of_constraint(); + int n = action.get_variable()->get_number_of_constraint(); for (int i = 0; i < n; i++) { - double value = action->get_variable()->get_value() * action->get_variable()->get_constraint_weight(i); + double value = action.get_variable()->get_value() * action.get_variable()->get_constraint_weight(i); /* Beware of composite actions: ptasks put links and cpus together. Extra pb: we cannot dynamic_cast from void* */ simgrid::kernel::resource::Resource* resource = - static_cast(action->get_variable()->get_constraint(i)->get_id()); + static_cast(action.get_variable()->get_constraint(i)->get_id()); simgrid::surf::Cpu* cpu = dynamic_cast(resource); if (cpu != nullptr) - TRACE_surf_resource_set_utilization("HOST", "speed_used", cpu->get_cname(), action->get_category(), value, - action->get_last_update(), SIMIX_get_clock() - action->get_last_update()); + TRACE_surf_resource_set_utilization("HOST", "speed_used", cpu->get_cname(), action.get_category(), value, + action.get_last_update(), SIMIX_get_clock() - action.get_last_update()); simgrid::kernel::resource::LinkImpl* link = dynamic_cast(resource); if (link != nullptr) - TRACE_surf_resource_set_utilization("LINK", "bandwidth_used", link->get_cname(), action->get_category(), value, - action->get_last_update(), SIMIX_get_clock() - action->get_last_update()); + TRACE_surf_resource_set_utilization("LINK", "bandwidth_used", link->get_cname(), action.get_category(), value, + action.get_last_update(), SIMIX_get_clock() - action.get_last_update()); } } -static void instr_link_on_bandwidth_change(simgrid::s4u::Link& link) +static void instr_link_on_bandwidth_change(simgrid::s4u::Link const& link) { simgrid::instr::Container::by_name(link.get_name()) ->get_variable("bandwidth") ->set_event(surf_get_clock(), sg_bandwidth_factor * link.get_bandwidth()); } -static void instr_netpoint_on_creation(simgrid::kernel::routing::NetPoint* netpoint) +static void instr_netpoint_on_creation(simgrid::kernel::routing::NetPoint const& netpoint) { - if (netpoint->is_router()) - new simgrid::instr::RouterContainer(netpoint->get_name(), currentContainer.back()); + if (netpoint.is_router()) + new simgrid::instr::RouterContainer(netpoint.get_name(), currentContainer.back()); } static void instr_on_platform_created() @@ -288,12 +288,12 @@ static void instr_on_platform_created() TRACE_paje_dump_buffer(true); } -static void instr_actor_on_creation(simgrid::s4u::ActorPtr actor) +static void instr_actor_on_creation(simgrid::s4u::Actor const& actor) { container_t root = simgrid::instr::Container::get_root(); - container_t container = simgrid::instr::Container::by_name(actor->get_host()->get_name()); + container_t container = simgrid::instr::Container::by_name(actor.get_host()->get_name()); - container->create_child(instr_pid(actor.get()), "ACTOR"); + container->create_child(instr_pid(actor), "ACTOR"); simgrid::instr::ContainerType* actor_type = container->type_->by_name_or_create("ACTOR"); simgrid::instr::StateType* state = actor_type->by_name_or_create("ACTOR_STATE"); @@ -305,8 +305,8 @@ static void instr_actor_on_creation(simgrid::s4u::ActorPtr actor) root->type_->by_name_or_create("ACTOR_LINK", actor_type, actor_type); root->type_->by_name_or_create("ACTOR_TASK_LINK", actor_type, actor_type); - std::string container_name = instr_pid(actor.get()); - actor->on_exit([container_name](bool failed) { + std::string container_name = instr_pid(actor); + actor.on_exit([container_name](bool failed) { if (failed) // kill means that this actor no longer exists, let's destroy it simgrid::instr::Container::by_name(container_name)->remove_from_parent(); @@ -315,28 +315,28 @@ static void instr_actor_on_creation(simgrid::s4u::ActorPtr actor) static long long int counter = 0; -static void instr_actor_on_migration_start(simgrid::s4u::ActorPtr actor) +static void instr_actor_on_migration_start(simgrid::s4u::Actor const& actor) { // start link - container_t container = simgrid::instr::Container::by_name(instr_pid(actor.get())); + container_t container = simgrid::instr::Container::by_name(instr_pid(actor)); simgrid::instr::Container::get_root()->get_link("ACTOR_LINK")->start_event(container, "M", std::to_string(counter)); // destroy existing container of this process container->remove_from_parent(); } -static void instr_actor_on_migration_end(simgrid::s4u::ActorPtr actor) +static void instr_actor_on_migration_end(simgrid::s4u::Actor const& actor) { // create new container on the new_host location - simgrid::instr::Container::by_name(actor->get_host()->get_name())->create_child(instr_pid(actor.get()), "ACTOR"); + simgrid::instr::Container::by_name(actor.get_host()->get_name())->create_child(instr_pid(actor), "ACTOR"); // end link simgrid::instr::Container::get_root() ->get_link("ACTOR_LINK") - ->end_event(simgrid::instr::Container::by_name(instr_pid(actor.get())), "M", std::to_string(counter)); + ->end_event(simgrid::instr::Container::by_name(instr_pid(actor)), "M", std::to_string(counter)); counter++; } -static void instr_vm_on_creation(simgrid::s4u::Host& host) +static void instr_vm_on_creation(simgrid::s4u::Host const& host) { container_t container = new simgrid::instr::HostContainer(host, currentContainer.back()); container_t root = simgrid::instr::Container::get_root(); @@ -361,7 +361,8 @@ void instr_define_callbacks() simgrid::s4u::Host::on_speed_change.connect(instr_host_on_speed_change); simgrid::s4u::Link::on_creation.connect(instr_link_on_creation); simgrid::s4u::Link::on_bandwidth_change.connect(instr_link_on_bandwidth_change); - simgrid::s4u::NetZone::on_seal.connect([](simgrid::s4u::NetZone& /*netzone*/) { currentContainer.pop_back(); }); + simgrid::s4u::NetZone::on_seal.connect( + [](simgrid::s4u::NetZone const& /*netzone*/) { currentContainer.pop_back(); }); simgrid::kernel::routing::NetPoint::on_creation.connect(instr_netpoint_on_creation); } simgrid::s4u::NetZone::on_creation.connect(instr_netzone_on_creation); @@ -371,37 +372,37 @@ void instr_define_callbacks() if (TRACE_actor_is_enabled()) { simgrid::s4u::Actor::on_creation.connect(instr_actor_on_creation); - simgrid::s4u::Actor::on_destruction.connect([](simgrid::s4u::ActorPtr actor) { - auto container = simgrid::instr::Container::by_name_or_null(instr_pid(actor.get())); + simgrid::s4u::Actor::on_destruction.connect([](simgrid::s4u::Actor const& actor) { + auto container = simgrid::instr::Container::by_name_or_null(instr_pid(actor)); if (container != nullptr) container->remove_from_parent(); }); - simgrid::s4u::Actor::on_suspend.connect([](simgrid::s4u::ActorPtr actor) { - simgrid::instr::Container::by_name(instr_pid(actor.get()))->get_state("ACTOR_STATE")->push_event("suspend"); + simgrid::s4u::Actor::on_suspend.connect([](simgrid::s4u::Actor const& actor) { + simgrid::instr::Container::by_name(instr_pid(actor))->get_state("ACTOR_STATE")->push_event("suspend"); }); - simgrid::s4u::Actor::on_resume.connect([](simgrid::s4u::ActorPtr actor) { - simgrid::instr::Container::by_name(instr_pid(actor.get()))->get_state("ACTOR_STATE")->pop_event(); + simgrid::s4u::Actor::on_resume.connect([](simgrid::s4u::Actor const& actor) { + simgrid::instr::Container::by_name(instr_pid(actor))->get_state("ACTOR_STATE")->pop_event(); }); - simgrid::s4u::Actor::on_sleep.connect([](simgrid::s4u::ActorPtr actor) { - simgrid::instr::Container::by_name(instr_pid(actor.get()))->get_state("ACTOR_STATE")->push_event("sleep"); + simgrid::s4u::Actor::on_sleep.connect([](simgrid::s4u::Actor const& actor) { + simgrid::instr::Container::by_name(instr_pid(actor))->get_state("ACTOR_STATE")->push_event("sleep"); }); - simgrid::s4u::Actor::on_wake_up.connect([](simgrid::s4u::ActorPtr actor) { - simgrid::instr::Container::by_name(instr_pid(actor.get()))->get_state("ACTOR_STATE")->pop_event(); + simgrid::s4u::Actor::on_wake_up.connect([](simgrid::s4u::Actor const& actor) { + simgrid::instr::Container::by_name(instr_pid(actor))->get_state("ACTOR_STATE")->pop_event(); }); - simgrid::s4u::Exec::on_start.connect([](simgrid::s4u::ActorPtr actor) { - simgrid::instr::Container::by_name(instr_pid(actor.get()))->get_state("ACTOR_STATE")->push_event("execute"); + simgrid::s4u::Exec::on_start.connect([](simgrid::s4u::Actor const& actor) { + simgrid::instr::Container::by_name(instr_pid(actor))->get_state("ACTOR_STATE")->push_event("execute"); }); - simgrid::s4u::Exec::on_completion.connect([](simgrid::s4u::ActorPtr actor) { - simgrid::instr::Container::by_name(instr_pid(actor.get()))->get_state("ACTOR_STATE")->pop_event(); + simgrid::s4u::Exec::on_completion.connect([](simgrid::s4u::Actor const& actor) { + simgrid::instr::Container::by_name(instr_pid(actor))->get_state("ACTOR_STATE")->pop_event(); }); - simgrid::s4u::Comm::on_sender_start.connect([](simgrid::s4u::ActorPtr actor) { - simgrid::instr::Container::by_name(instr_pid(actor.get()))->get_state("ACTOR_STATE")->push_event("send"); + simgrid::s4u::Comm::on_sender_start.connect([](simgrid::s4u::Actor const& actor) { + simgrid::instr::Container::by_name(instr_pid(actor))->get_state("ACTOR_STATE")->push_event("send"); }); - simgrid::s4u::Comm::on_receiver_start.connect([](simgrid::s4u::ActorPtr actor) { - simgrid::instr::Container::by_name(instr_pid(actor.get()))->get_state("ACTOR_STATE")->push_event("receive"); + simgrid::s4u::Comm::on_receiver_start.connect([](simgrid::s4u::Actor const& actor) { + simgrid::instr::Container::by_name(instr_pid(actor))->get_state("ACTOR_STATE")->push_event("receive"); }); - simgrid::s4u::Comm::on_completion.connect([](simgrid::s4u::ActorPtr actor) { - simgrid::instr::Container::by_name(instr_pid(actor.get()))->get_state("ACTOR_STATE")->pop_event(); + simgrid::s4u::Comm::on_completion.connect([](simgrid::s4u::Actor const& actor) { + simgrid::instr::Container::by_name(instr_pid(actor))->get_state("ACTOR_STATE")->pop_event(); }); simgrid::s4u::Actor::on_migration_start.connect(instr_actor_on_migration_start); simgrid::s4u::Actor::on_migration_end.connect(instr_actor_on_migration_end); @@ -409,20 +410,21 @@ void instr_define_callbacks() if (TRACE_vm_is_enabled()) { simgrid::s4u::Host::on_creation.connect(instr_vm_on_creation); - simgrid::s4u::VirtualMachine::on_start.connect([](simgrid::s4u::VirtualMachine& vm) { + simgrid::s4u::VirtualMachine::on_start.connect([](simgrid::s4u::VirtualMachine const& vm) { simgrid::instr::Container::by_name(vm.get_name())->get_state("VM_STATE")->push_event("start"); }); - simgrid::s4u::VirtualMachine::on_started.connect([](simgrid::s4u::VirtualMachine& vm) { + simgrid::s4u::VirtualMachine::on_started.connect([](simgrid::s4u::VirtualMachine const& vm) { simgrid::instr::Container::by_name(vm.get_name())->get_state("VM_STATE")->pop_event(); }); - simgrid::s4u::VirtualMachine::on_suspend.connect([](simgrid::s4u::VirtualMachine& vm) { + simgrid::s4u::VirtualMachine::on_suspend.connect([](simgrid::s4u::VirtualMachine const& vm) { simgrid::instr::Container::by_name(vm.get_name())->get_state("VM_STATE")->push_event("suspend"); }); - simgrid::s4u::VirtualMachine::on_resume.connect([](simgrid::s4u::VirtualMachine& vm) { + simgrid::s4u::VirtualMachine::on_resume.connect([](simgrid::s4u::VirtualMachine const& vm) { simgrid::instr::Container::by_name(vm.get_name())->get_state("VM_STATE")->pop_event(); }); - simgrid::s4u::Host::on_destruction.connect( - [](simgrid::s4u::Host& host) { simgrid::instr::Container::by_name(host.get_name())->remove_from_parent(); }); + simgrid::s4u::Host::on_destruction.connect([](simgrid::s4u::Host const& host) { + simgrid::instr::Container::by_name(host.get_name())->remove_from_parent(); + }); } } /* diff --git a/src/instr/instr_private.hpp b/src/instr/instr_private.hpp index c5886f5361..985d664e1c 100644 --- a/src/instr/instr_private.hpp +++ b/src/instr/instr_private.hpp @@ -235,7 +235,7 @@ public: } } -XBT_PRIVATE std::string instr_pid(s4u_Actor* proc); +XBT_PRIVATE std::string instr_pid(simgrid::s4u::Actor const& proc); extern XBT_PRIVATE std::set created_categories; extern XBT_PRIVATE std::set declared_marks; diff --git a/src/kernel/activity/ActivityImpl.cpp b/src/kernel/activity/ActivityImpl.cpp index 757667bb15..f7f719c20a 100644 --- a/src/kernel/activity/ActivityImpl.cpp +++ b/src/kernel/activity/ActivityImpl.cpp @@ -26,7 +26,7 @@ void ActivityImpl::suspend() return; XBT_VERB("This activity is suspended (remain: %f)", surf_action_->get_remains()); surf_action_->suspend(); - on_suspended(this); + on_suspended(*this); } void ActivityImpl::resume() @@ -35,7 +35,7 @@ void ActivityImpl::resume() return; XBT_VERB("This activity is resumed (remain: %f)", surf_action_->get_remains()); surf_action_->resume(); - on_resumed(this); + on_resumed(*this); } void ActivityImpl::set_category(const std::string& category) @@ -57,8 +57,8 @@ void intrusive_ptr_release(simgrid::kernel::activity::ActivityImpl* activity) delete activity; } } -xbt::signal ActivityImpl::on_resumed; -xbt::signal ActivityImpl::on_suspended; +xbt::signal ActivityImpl::on_resumed; +xbt::signal ActivityImpl::on_suspended; } } } // namespace simgrid::kernel::activity:: diff --git a/src/kernel/activity/ActivityImpl.hpp b/src/kernel/activity/ActivityImpl.hpp index ffb02314db..fdd8ef399b 100644 --- a/src/kernel/activity/ActivityImpl.hpp +++ b/src/kernel/activity/ActivityImpl.hpp @@ -48,8 +48,8 @@ private: std::string name_; /* Activity name if any */ public: - static xbt::signal on_suspended; - static xbt::signal on_resumed; + static xbt::signal on_suspended; + static xbt::signal on_resumed; }; } // namespace activity } // namespace kernel diff --git a/src/kernel/activity/ExecImpl.cpp b/src/kernel/activity/ExecImpl.cpp index 462eb70c90..fedef0824d 100644 --- a/src/kernel/activity/ExecImpl.cpp +++ b/src/kernel/activity/ExecImpl.cpp @@ -92,7 +92,7 @@ ExecImpl* ExecImpl::start(double flops_amount, double priority, double bound) } XBT_DEBUG("Create execute synchro %p: %s", this, get_cname()); - ExecImpl::on_creation(this); + ExecImpl::on_creation(*this); return this; } @@ -107,7 +107,7 @@ ExecImpl* ExecImpl::start(const std::vector& hosts, const std::vecto } } XBT_DEBUG("Create parallel execute synchro %p", this); - ExecImpl::on_creation(this); + ExecImpl::on_creation(*this); return this; } void ExecImpl::cancel() @@ -159,7 +159,7 @@ void ExecImpl::post() state_ = SIMIX_DONE; } - on_completion(this); + on_completion(*this); if (surf_action_) { surf_action_->unref(); @@ -240,16 +240,16 @@ ActivityImpl* ExecImpl::migrate(s4u::Host* to) this->surf_action_ = new_action; } - on_migration(this, to); + on_migration(*this, to); return this; } /************* * Callbacks * *************/ -xbt::signal ExecImpl::on_creation; -xbt::signal ExecImpl::on_completion; -xbt::signal ExecImpl::on_migration; +xbt::signal ExecImpl::on_creation; +xbt::signal ExecImpl::on_completion; +xbt::signal ExecImpl::on_migration; } // namespace activity } // namespace kernel diff --git a/src/kernel/activity/ExecImpl.hpp b/src/kernel/activity/ExecImpl.hpp index ea96c28ec3..bf991874bf 100644 --- a/src/kernel/activity/ExecImpl.hpp +++ b/src/kernel/activity/ExecImpl.hpp @@ -39,9 +39,9 @@ public: /* The host where the execution takes place. nullptr means this is a parallel exec (and only surf knows the hosts) */ s4u::Host* host_ = nullptr; - static xbt::signal on_creation; - static xbt::signal on_completion; - static xbt::signal on_migration; + static xbt::signal on_creation; + static xbt::signal on_completion; + static xbt::signal on_migration; }; } // namespace activity } // namespace kernel diff --git a/src/kernel/activity/IoImpl.cpp b/src/kernel/activity/IoImpl.cpp index 1a08cb3b25..3bbef385a4 100644 --- a/src/kernel/activity/IoImpl.cpp +++ b/src/kernel/activity/IoImpl.cpp @@ -68,7 +68,7 @@ IoImpl* IoImpl::start() surf_action_->set_data(this); XBT_DEBUG("Create IO synchro %p %s", this, get_cname()); - IoImpl::on_start(this); + IoImpl::on_start(*this); return this; } @@ -99,7 +99,7 @@ void IoImpl::post() default: THROW_IMPOSSIBLE; } - on_completion(this); + on_completion(*this); finish(); } @@ -134,8 +134,8 @@ void IoImpl::finish() /************* * Callbacks * *************/ -xbt::signal IoImpl::on_start; -xbt::signal IoImpl::on_completion; +xbt::signal IoImpl::on_start; +xbt::signal IoImpl::on_completion; } // namespace activity } // namespace kernel diff --git a/src/kernel/activity/IoImpl.hpp b/src/kernel/activity/IoImpl.hpp index e71a11e8ea..6ab89d9900 100644 --- a/src/kernel/activity/IoImpl.hpp +++ b/src/kernel/activity/IoImpl.hpp @@ -34,8 +34,8 @@ public: void cancel(); double get_remaining(); - static xbt::signal on_start; - static xbt::signal on_completion; + static xbt::signal on_start; + static xbt::signal on_completion; }; } // namespace activity } // namespace kernel diff --git a/src/kernel/actor/ActorImpl.cpp b/src/kernel/actor/ActorImpl.cpp index 3aab7633b3..95dc8405a2 100644 --- a/src/kernel/actor/ActorImpl.cpp +++ b/src/kernel/actor/ActorImpl.cpp @@ -110,8 +110,7 @@ ActorImplPtr ActorImpl::attach(const std::string& name, void* data, s4u::Host* h context->attach_start(); /* The on_creation() signal must be delayed until there, where the pid and everything is set */ - simgrid::s4u::ActorPtr tmp = actor->iface(); // Passing this directly to on_creation will lead to crashes - simgrid::s4u::Actor::on_creation(tmp); + simgrid::s4u::Actor::on_creation(*actor->ciface()); return ActorImplPtr(actor); } @@ -182,7 +181,7 @@ void ActorImpl::cleanup() simix_global->mutex.unlock(); context_->iwannadie = false; // don't let the simcall's yield() do a Context::stop(), to avoid infinite loops - simgrid::simix::simcall([this] { simgrid::s4u::Actor::on_destruction(iface()); }); + simgrid::simix::simcall([this] { simgrid::s4u::Actor::on_destruction(*ciface()); }); context_->iwannadie = true; } @@ -486,7 +485,7 @@ ActorImplPtr ActorImpl::init(const std::string& name, s4u::Host* host) intrusive_ptr_add_ref(actor); /* The on_creation() signal must be delayed until there, where the pid and everything is set */ - s4u::Actor::on_creation(actor->iface()); + s4u::Actor::on_creation(*actor->ciface()); return ActorImplPtr(actor); } diff --git a/src/kernel/routing/NetPoint.cpp b/src/kernel/routing/NetPoint.cpp index f723a2eef3..434f94329c 100644 --- a/src/kernel/routing/NetPoint.cpp +++ b/src/kernel/routing/NetPoint.cpp @@ -13,7 +13,7 @@ namespace simgrid { namespace kernel { namespace routing { -simgrid::xbt::signal NetPoint::on_creation; +simgrid::xbt::signal NetPoint::on_creation; NetPoint::NetPoint(const std::string& name, NetPoint::Type componentType, NetZoneImpl* netzone_p) : name_(name), component_type_(componentType), englobing_zone_(netzone_p) @@ -23,7 +23,7 @@ NetPoint::NetPoint(const std::string& name, NetPoint::Type componentType, NetZon else id_ = static_cast(-1); simgrid::s4u::Engine::get_instance()->netpoint_register(this); - simgrid::kernel::routing::NetPoint::on_creation(this); + simgrid::kernel::routing::NetPoint::on_creation(*this); } } } diff --git a/src/msg/msg_global.cpp b/src/msg/msg_global.cpp index 9c644ff128..a985757e83 100644 --- a/src/msg/msg_global.cpp +++ b/src/msg/msg_global.cpp @@ -46,14 +46,14 @@ void MSG_init_nocheck(int *argc, char **argv) { msg_global->task_copy_callback = nullptr; msg_global->process_data_cleanup = nullptr; - simgrid::s4u::Actor::on_creation.connect([](simgrid::s4u::ActorPtr actor) { + simgrid::s4u::Actor::on_creation.connect([](simgrid::s4u::Actor& actor) { XBT_DEBUG("creating the extension to store user data"); - actor->extension_set(new simgrid::msg::ActorUserData()); + actor.extension_set(new simgrid::msg::ActorUserData()); }); - simgrid::s4u::Actor::on_destruction.connect([](simgrid::s4u::ActorPtr actor) { + simgrid::s4u::Actor::on_destruction.connect([](simgrid::s4u::Actor const& actor) { // free the data if a function was provided - void* userdata = actor->extension()->get_user_data(); + void* userdata = actor.extension()->get_user_data(); if (userdata && msg_global->process_data_cleanup) { msg_global->process_data_cleanup(userdata); } diff --git a/src/msg/msg_process.cpp b/src/msg/msg_process.cpp index 9cdb6057f5..e588143134 100644 --- a/src/msg/msg_process.cpp +++ b/src/msg/msg_process.cpp @@ -11,9 +11,9 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(msg_process, msg, "Logging specific to MSG (process)"); -std::string instr_pid(msg_process_t proc) +std::string instr_pid(simgrid::s4u::Actor const& proc) { - return std::string(proc->get_name()) + "-" + std::to_string(proc->get_pid()); + return std::string(proc.get_name()) + "-" + std::to_string(proc.get_pid()); } /******************************** Process ************************************/ diff --git a/src/msg/msg_task.cpp b/src/msg/msg_task.cpp index b0998af666..46adfb49e5 100644 --- a/src/msg/msg_task.cpp +++ b/src/msg/msg_task.cpp @@ -100,7 +100,7 @@ msg_error_t Task::execute() s4u::CommPtr Task::send_async(const std::string& alias, void_f_pvoid_t cleanup, bool detached) { if (TRACE_actor_is_enabled()) { - container_t process_container = simgrid::instr::Container::by_name(instr_pid(MSG_process_self())); + container_t process_container = simgrid::instr::Container::by_name(instr_pid(*MSG_process_self())); std::string key = std::string("p") + std::to_string(get_id()); simgrid::instr::Container::get_root()->get_link("ACTOR_TASK_LINK")->start_event(process_container, "SR", key); } @@ -639,7 +639,7 @@ msg_error_t MSG_task_receive_ext_bounded(msg_task_t* task, const char* alias, do } if (TRACE_actor_is_enabled() && ret != MSG_HOST_FAILURE && ret != MSG_TRANSFER_FAILURE && ret != MSG_TIMEOUT) { - container_t process_container = simgrid::instr::Container::by_name(instr_pid(MSG_process_self())); + container_t process_container = simgrid::instr::Container::by_name(instr_pid(*MSG_process_self())); std::string key = std::string("p") + std::to_string((*task)->get_id()); simgrid::instr::Container::get_root()->get_link("ACTOR_TASK_LINK")->end_event(process_container, "SR", key); diff --git a/src/plugins/dirty_page_tracking.cpp b/src/plugins/dirty_page_tracking.cpp index 807dc1d090..0298cd9f20 100644 --- a/src/plugins/dirty_page_tracking.cpp +++ b/src/plugins/dirty_page_tracking.cpp @@ -11,7 +11,7 @@ namespace simgrid { namespace vm { class DirtyPageTrackingExt { bool dp_tracking_ = false; - std::map dp_objs_; + std::map dp_objs_; double dp_updated_by_deleted_tasks_ = 0.0; // Percentage of pages that get dirty compared to netspeed [0;1] bytes per 1 flop execution double dp_intensity_ = 0.0; @@ -23,9 +23,9 @@ public: void start_tracking(); void stop_tracking() { dp_tracking_ = false; } bool is_tracking() { return dp_tracking_; } - void track(kernel::activity::ExecImplPtr exec, double amount) { dp_objs_.insert({exec, amount}); } - void untrack(kernel::activity::ExecImplPtr exec) { dp_objs_.erase(exec); } - double get_stored_remains(kernel::activity::ExecImplPtr exec) { return dp_objs_.at(exec); } + void track(kernel::activity::ExecImpl const* exec, double amount) { dp_objs_.insert({exec, amount}); } + void untrack(kernel::activity::ExecImpl const* exec) { dp_objs_.erase(exec); } + double get_stored_remains(kernel::activity::ExecImpl const* exec) { return dp_objs_.at(exec); } void update_dirty_page_count(double delta) { dp_updated_by_deleted_tasks_ += delta; } double computed_flops_lookup(); double get_intensity() { return dp_intensity_; } @@ -67,37 +67,37 @@ double DirtyPageTrackingExt::computed_flops_lookup() } // namespace vm } // namespace simgrid -static void on_virtual_machine_creation(simgrid::vm::VirtualMachineImpl* vm) +static void on_virtual_machine_creation(simgrid::vm::VirtualMachineImpl& vm) { - vm->extension_set(new simgrid::vm::DirtyPageTrackingExt()); + vm.extension_set(new simgrid::vm::DirtyPageTrackingExt()); } -static void on_exec_creation(simgrid::kernel::activity::ExecImplPtr exec) +static void on_exec_creation(simgrid::kernel::activity::ExecImpl const& exec) { - simgrid::s4u::VirtualMachine* vm = dynamic_cast(exec->host_); + simgrid::s4u::VirtualMachine* vm = dynamic_cast(exec.host_); if (vm == nullptr) return; if (vm->get_impl()->extension()->is_tracking()) { - vm->get_impl()->extension()->track(exec, exec->get_remaining()); + vm->get_impl()->extension()->track(&exec, exec.get_remaining()); } else { - vm->get_impl()->extension()->track(exec, 0.0); + vm->get_impl()->extension()->track(&exec, 0.0); } } -static void on_exec_completion(simgrid::kernel::activity::ExecImplPtr exec) +static void on_exec_completion(simgrid::kernel::activity::ExecImpl const& exec) { - simgrid::s4u::VirtualMachine* vm = dynamic_cast(exec->host_); + simgrid::s4u::VirtualMachine* vm = dynamic_cast(exec.host_); if (vm == nullptr) return; /* If we are in the middle of dirty page tracking, we record how much computation has been done until now, and keep * the information for the lookup_() function that will called soon. */ if (vm->get_impl()->extension()->is_tracking()) { - double delta = vm->get_impl()->extension()->get_stored_remains(exec); + double delta = vm->get_impl()->extension()->get_stored_remains(&exec); vm->get_impl()->extension()->update_dirty_page_count(delta); } - vm->get_impl()->extension()->untrack(exec); + vm->get_impl()->extension()->untrack(&exec); } void sg_vm_dirty_page_tracking_init() diff --git a/src/plugins/host_dvfs.cpp b/src/plugins/host_dvfs.cpp index cda87c0758..0cca4f8c2d 100644 --- a/src/plugins/host_dvfs.cpp +++ b/src/plugins/host_dvfs.cpp @@ -278,36 +278,38 @@ public: explicit Adagio(simgrid::s4u::Host* ptr) : Governor(ptr), rates(100, std::vector(ptr->get_pstate_count(), 0.0)) { - simgrid::smpi::plugin::ampi::on_iteration_in.connect([this](simgrid::s4u::ActorPtr actor) { + simgrid::smpi::plugin::ampi::on_iteration_in.connect([this](simgrid::s4u::Actor const& actor) { // Every instance of this class subscribes to this event, so one per host // This means that for any actor, all 'hosts' are normally notified of these // changes, even those who don't currently run the actor 'proc_id'. // -> Let's check if this signal call is for us! - if (get_host() == actor->get_host()) { + if (get_host() == actor.get_host()) { iteration_running = true; } }); - simgrid::smpi::plugin::ampi::on_iteration_out.connect([this](simgrid::s4u::ActorPtr actor) { - if (get_host() == actor->get_host()) { + simgrid::smpi::plugin::ampi::on_iteration_out.connect([this](simgrid::s4u::Actor const& actor) { + if (get_host() == actor.get_host()) { iteration_running = false; task_id = 0; } }); - simgrid::kernel::activity::ExecImpl::on_creation.connect([this](simgrid::kernel::activity::ExecImplPtr activity) { - if (activity->host_ == get_host()) - pre_task(); - }); - simgrid::kernel::activity::ExecImpl::on_completion.connect([this](simgrid::kernel::activity::ExecImplPtr activity) { - // For more than one host (not yet supported), we can access the host via - // simcalls_.front()->issuer->iface()->get_host() - if (activity->host_ == get_host() && iteration_running) { - comp_timer += activity->surf_action_->get_finish_time() - activity->surf_action_->get_start_time(); - } - }); + simgrid::kernel::activity::ExecImpl::on_creation.connect( + [this](simgrid::kernel::activity::ExecImpl const& activity) { + if (activity.host_ == get_host()) + pre_task(); + }); + simgrid::kernel::activity::ExecImpl::on_completion.connect( + [this](simgrid::kernel::activity::ExecImpl const& activity) { + // For more than one host (not yet supported), we can access the host via + // simcalls_.front()->issuer->iface()->get_host() + if (activity.host_ == get_host() && iteration_running) { + comp_timer += activity.surf_action_->get_finish_time() - activity.surf_action_->get_start_time(); + } + }); // FIXME I think that this fires at the same time for all hosts, so when the src sends something, // the dst will be notified even though it didn't even arrive at the recv yet simgrid::s4u::Link::on_communicate.connect( - [this](kernel::resource::NetworkAction*, s4u::Host* src, s4u::Host* dst) { + [this](kernel::resource::NetworkAction const&, s4u::Host* src, s4u::Host* dst) { if ((get_host() == src || get_host() == dst) && iteration_running) { post_task(); } diff --git a/src/plugins/host_energy.cpp b/src/plugins/host_energy.cpp index f52746b063..4e695cd2bc 100644 --- a/src/plugins/host_energy.cpp +++ b/src/plugins/host_energy.cpp @@ -411,10 +411,10 @@ static void on_creation(simgrid::s4u::Host& host) host.extension_set(new HostEnergy(&host)); } -static void on_action_state_change(simgrid::surf::CpuAction* action, +static void on_action_state_change(simgrid::surf::CpuAction const& action, simgrid::kernel::resource::Action::State /*previous*/) { - for (simgrid::surf::Cpu* const& cpu : action->cpus()) { + for (simgrid::surf::Cpu* const& cpu : action.cpus()) { simgrid::s4u::Host* host = cpu->get_host(); if (host != nullptr) { @@ -434,9 +434,9 @@ static void on_action_state_change(simgrid::surf::CpuAction* action, /* This callback is fired either when the host changes its state (on/off) ("onStateChange") or its speed * (because the user changed the pstate, or because of external trace events) ("onSpeedChange") */ -static void on_host_change(simgrid::s4u::Host& host) +static void on_host_change(simgrid::s4u::Host const& host) { - if (dynamic_cast(&host)) // Ignore virtual machines + if (dynamic_cast(&host)) // Ignore virtual machines return; HostEnergy* host_energy = host.extension(); @@ -444,9 +444,9 @@ static void on_host_change(simgrid::s4u::Host& host) host_energy->update(); } -static void on_host_destruction(simgrid::s4u::Host& host) +static void on_host_destruction(simgrid::s4u::Host const& host) { - if (dynamic_cast(&host)) // Ignore virtual machines + if (dynamic_cast(&host)) // Ignore virtual machines return; XBT_INFO("Energy consumption of host %s: %f Joules", host.get_cname(), @@ -497,9 +497,9 @@ void sg_host_energy_plugin_init() // that the next trigger would be the 2nd compute, hence ignoring the idle time // during the recv call. By updating at the beginning of a compute, we can // fix that. (If the cpu is not idle, this is not required.) - simgrid::kernel::activity::ExecImpl::on_creation.connect([](simgrid::kernel::activity::ExecImplPtr activity){ - if (activity->host_ != nullptr) { // We only run on one host - simgrid::s4u::Host* host = activity->host_; + simgrid::kernel::activity::ExecImpl::on_creation.connect([](simgrid::kernel::activity::ExecImpl const& activity) { + if (activity.host_ != nullptr) { // We only run on one host + simgrid::s4u::Host* host = activity.host_; simgrid::s4u::VirtualMachine* vm = dynamic_cast(host); if (vm != nullptr) host = vm->get_pm(); diff --git a/src/plugins/host_load.cpp b/src/plugins/host_load.cpp index c529ac8067..1688ef3d9a 100644 --- a/src/plugins/host_load.cpp +++ b/src/plugins/host_load.cpp @@ -168,9 +168,9 @@ using simgrid::plugin::HostLoad; /* **************************** events callback *************************** */ /* This callback is fired either when the host changes its state (on/off) or its speed * (because the user changed the pstate, or because of external trace events) */ -static void on_host_change(simgrid::s4u::Host& host) +static void on_host_change(simgrid::s4u::Host const& host) { - if (dynamic_cast(&host)) // Ignore virtual machines + if (dynamic_cast(&host)) // Ignore virtual machines return; host.extension()->update(); @@ -204,14 +204,14 @@ void sg_host_load_plugin_init() host.extension_set(new HostLoad(&host)); }); - simgrid::kernel::activity::ExecImpl::on_creation.connect([](simgrid::kernel::activity::ExecImplPtr activity){ - if (activity->host_ != nullptr) { // We only run on one host - simgrid::s4u::Host* host = activity->host_; + simgrid::kernel::activity::ExecImpl::on_creation.connect([](simgrid::kernel::activity::ExecImpl& activity) { + if (activity.host_ != nullptr) { // We only run on one host + simgrid::s4u::Host* host = activity.host_; simgrid::s4u::VirtualMachine* vm = dynamic_cast(host); if (vm != nullptr) host = vm->get_pm(); - host->extension()->add_activity(activity); + host->extension()->add_activity(&activity); host->extension()->update(); // If the system was idle until now, we need to update *before* // this computation starts running so we can keep track of the // idle time. (Communication operations don't trigger this hook!) @@ -220,9 +220,9 @@ void sg_host_load_plugin_init() XBT_DEBUG("HostLoad plugin currently does not support executions on several hosts"); } }); - simgrid::kernel::activity::ExecImpl::on_completion.connect([](simgrid::kernel::activity::ExecImplPtr activity){ - if (activity->host_ != nullptr) { // We only run on one host - simgrid::s4u::Host* host = activity->host_; + simgrid::kernel::activity::ExecImpl::on_completion.connect([](simgrid::kernel::activity::ExecImpl const& activity) { + if (activity.host_ != nullptr) { // We only run on one host + simgrid::s4u::Host* host = activity.host_; simgrid::s4u::VirtualMachine* vm = dynamic_cast(host); if (vm != nullptr) host = vm->get_pm(); diff --git a/src/plugins/link_energy.cpp b/src/plugins/link_energy.cpp index 5e27abd95c..ea5cf2d8ce 100644 --- a/src/plugins/link_energy.cpp +++ b/src/plugins/link_energy.cpp @@ -145,10 +145,11 @@ double LinkEnergy::get_consumed_energy() using simgrid::plugin::LinkEnergy; /* **************************** events callback *************************** */ -static void on_communicate(simgrid::kernel::resource::NetworkAction* action, simgrid::s4u::Host*, simgrid::s4u::Host*) +static void on_communicate(simgrid::kernel::resource::NetworkAction const& action, simgrid::s4u::Host*, + simgrid::s4u::Host*) { XBT_DEBUG("onCommunicate is called"); - for (simgrid::kernel::resource::LinkImpl* link : action->links()) { + for (simgrid::kernel::resource::LinkImpl* link : action.links()) { if (link == nullptr) continue; @@ -194,21 +195,22 @@ void sg_link_energy_plugin_init() simgrid::s4u::Link::on_creation.connect([](simgrid::s4u::Link& link) { link.extension_set(new LinkEnergy(&link)); }); - simgrid::s4u::Link::on_state_change.connect([](simgrid::s4u::Link& link) { link.extension()->update(); }); + simgrid::s4u::Link::on_state_change.connect( + [](simgrid::s4u::Link const& link) { link.extension()->update(); }); - simgrid::s4u::Link::on_destruction.connect([](simgrid::s4u::Link& link) { + simgrid::s4u::Link::on_destruction.connect([](simgrid::s4u::Link const& link) { if (link.get_name() != "__loopback__") XBT_INFO("Energy consumption of link '%s': %f Joules", link.get_cname(), link.extension()->get_consumed_energy()); }); - simgrid::s4u::Link::on_communication_state_change.connect( - [](simgrid::kernel::resource::NetworkAction* action, simgrid::kernel::resource::Action::State /* previous */) { - for (simgrid::kernel::resource::LinkImpl* link : action->links()) { - if (link != nullptr) - link->piface_.extension()->update(); - } - }); + simgrid::s4u::Link::on_communication_state_change.connect([]( + simgrid::kernel::resource::NetworkAction const& action, simgrid::kernel::resource::Action::State /* previous */) { + for (simgrid::kernel::resource::LinkImpl* link : action.links()) { + if (link != nullptr) + link->piface_.extension()->update(); + } + }); simgrid::s4u::Link::on_communicate.connect(&on_communicate); simgrid::s4u::on_simulation_end.connect(&on_simulation_end); diff --git a/src/plugins/vm/VirtualMachineImpl.cpp b/src/plugins/vm/VirtualMachineImpl.cpp index 8179ece62b..912c575dc7 100644 --- a/src/plugins/vm/VirtualMachineImpl.cpp +++ b/src/plugins/vm/VirtualMachineImpl.cpp @@ -23,8 +23,8 @@ namespace vm { /************* * Callbacks * *************/ -simgrid::xbt::signal VirtualMachineImpl::on_creation; -simgrid::xbt::signal VirtualMachineImpl::on_destruction; +simgrid::xbt::signal VirtualMachineImpl::on_creation; +simgrid::xbt::signal VirtualMachineImpl::on_destruction; /********* * Model * @@ -38,7 +38,7 @@ std::deque VirtualMachineImpl::allVms_; */ const double virt_overhead = 1; // 0.95 -static void host_state_change(s4u::Host& host) +static void host_state_change(s4u::Host const& host) { if (not host.is_on()) { // just turned off. std::vector trash; @@ -51,13 +51,13 @@ static void host_state_change(s4u::Host& host) } } -static s4u::VirtualMachine* get_vm_from_task(kernel::activity::ActivityImplPtr task) +static s4u::VirtualMachine* get_vm_from_task(kernel::activity::ActivityImpl const& task) { - kernel::activity::ExecImpl* exec = dynamic_cast(task.get()); + auto* exec = dynamic_cast(&task); return exec != nullptr ? dynamic_cast(exec->host_) : nullptr; } -static void add_active_task(kernel::activity::ActivityImplPtr task) +static void add_active_task(kernel::activity::ActivityImpl const& task) { s4u::VirtualMachine* vm = get_vm_from_task(task); if (vm != nullptr) { @@ -67,7 +67,7 @@ static void add_active_task(kernel::activity::ActivityImplPtr task) } } -static void remove_active_task(kernel::activity::ActivityImplPtr task) +static void remove_active_task(kernel::activity::ActivityImpl const& task) { s4u::VirtualMachine* vm = get_vm_from_task(task); if (vm != nullptr) { @@ -153,13 +153,13 @@ VirtualMachineImpl::VirtualMachineImpl(simgrid::s4u::VirtualMachine* piface, sim update_action_weight(); XBT_VERB("Create VM(%s)@PM(%s)", piface->get_cname(), physical_host_->get_cname()); - on_creation(this); + on_creation(*this); } /** @brief A physical host does not disappear in the current SimGrid code, but a VM may disappear during a simulation */ VirtualMachineImpl::~VirtualMachineImpl() { - on_destruction(this); + on_destruction(*this); /* I was already removed from the allVms set if the VM was destroyed cleanly */ auto iter = find(allVms_.begin(), allVms_.end(), piface_); if (iter != allVms_.end()) diff --git a/src/plugins/vm/VirtualMachineImpl.hpp b/src/plugins/vm/VirtualMachineImpl.hpp index e501789e2a..6606520bea 100644 --- a/src/plugins/vm/VirtualMachineImpl.hpp +++ b/src/plugins/vm/VirtualMachineImpl.hpp @@ -31,10 +31,10 @@ public: explicit VirtualMachineImpl(s4u::VirtualMachine* piface, s4u::Host* host, int core_amount, size_t ramsize); ~VirtualMachineImpl(); - /** @brief Callbacks fired after VM creation. Signature: `void(VirtualMachineImpl*)` */ - static xbt::signal on_creation; - /** @brief Callbacks fired after VM destruction. Signature: `void(VirtualMachineImpl*)` */ - static xbt::signal on_destruction; + /** @brief Callbacks fired after VM creation. Signature: `void(VirtualMachineImpl&)` */ + static xbt::signal on_creation; + /** @brief Callbacks fired after VM destruction. Signature: `void(VirtualMachineImpl const&)` */ + static xbt::signal on_destruction; virtual void suspend(kernel::actor::ActorImpl* issuer); virtual void resume(); diff --git a/src/plugins/vm/VmLiveMigration.cpp b/src/plugins/vm/VmLiveMigration.cpp index a4897579a8..10a8a1973b 100644 --- a/src/plugins/vm/VmLiveMigration.cpp +++ b/src/plugins/vm/VmLiveMigration.cpp @@ -287,7 +287,7 @@ void MigrationTx::operator()() } } -static void onVirtualMachineShutdown(simgrid::s4u::VirtualMachine& vm) +static void onVirtualMachineShutdown(simgrid::s4u::VirtualMachine const& vm) { if (vm.get_impl()->is_migrating_) { vm.extension()->rx_->kill(); diff --git a/src/plugins/vm/s4u_VirtualMachine.cpp b/src/plugins/vm/s4u_VirtualMachine.cpp index 9483c038e3..f16253c407 100644 --- a/src/plugins/vm/s4u_VirtualMachine.cpp +++ b/src/plugins/vm/s4u_VirtualMachine.cpp @@ -15,13 +15,13 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_vm, "S4U virtual machines"); namespace simgrid { namespace s4u { -simgrid::xbt::signal VirtualMachine::on_start; -simgrid::xbt::signal VirtualMachine::on_started; -simgrid::xbt::signal VirtualMachine::on_shutdown; -simgrid::xbt::signal VirtualMachine::on_suspend; -simgrid::xbt::signal VirtualMachine::on_resume; -simgrid::xbt::signal VirtualMachine::on_migration_start; -simgrid::xbt::signal VirtualMachine::on_migration_end; +simgrid::xbt::signal VirtualMachine::on_start; +simgrid::xbt::signal VirtualMachine::on_started; +simgrid::xbt::signal VirtualMachine::on_shutdown; +simgrid::xbt::signal VirtualMachine::on_suspend; +simgrid::xbt::signal VirtualMachine::on_resume; +simgrid::xbt::signal VirtualMachine::on_migration_start; +simgrid::xbt::signal VirtualMachine::on_migration_end; VirtualMachine::VirtualMachine(const std::string& name, s4u::Host* physical_host, int core_amount) : VirtualMachine(name, physical_host, core_amount, 1024) diff --git a/src/s4u/s4u_Actor.cpp b/src/s4u/s4u_Actor.cpp index 7f2a401b04..01c2763203 100644 --- a/src/s4u/s4u_Actor.cpp +++ b/src/s4u/s4u_Actor.cpp @@ -21,14 +21,14 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_actor, "S4U actors"); namespace simgrid { namespace s4u { -xbt::signal s4u::Actor::on_creation; -xbt::signal s4u::Actor::on_suspend; -xbt::signal s4u::Actor::on_resume; -xbt::signal s4u::Actor::on_sleep; -xbt::signal s4u::Actor::on_wake_up; -xbt::signal s4u::Actor::on_migration_start; -xbt::signal s4u::Actor::on_migration_end; -xbt::signal s4u::Actor::on_destruction; +xbt::signal s4u::Actor::on_creation; +xbt::signal s4u::Actor::on_suspend; +xbt::signal s4u::Actor::on_resume; +xbt::signal s4u::Actor::on_sleep; +xbt::signal s4u::Actor::on_wake_up; +xbt::signal s4u::Actor::on_migration_start; +xbt::signal s4u::Actor::on_migration_end; +xbt::signal s4u::Actor::on_destruction; // ***** Actor creation ***** ActorPtr Actor::self() @@ -121,7 +121,7 @@ void Actor::on_exit(const std::function& fun) const void Actor::migrate(Host* new_host) { - s4u::Actor::on_migration_start(this); + s4u::Actor::on_migration_start(*this); simix::simcall([this, new_host]() { if (pimpl_->waiting_synchro != nullptr) { @@ -135,7 +135,7 @@ void Actor::migrate(Host* new_host) this->pimpl_->set_host(new_host); }); - s4u::Actor::on_migration_end(this); + s4u::Actor::on_migration_end(*this); } s4u::Host* Actor::get_host() const @@ -175,14 +175,14 @@ aid_t Actor::get_ppid() const void Actor::suspend() { - s4u::Actor::on_suspend(this); + s4u::Actor::on_suspend(*this); simcall_process_suspend(pimpl_); } void Actor::resume() { simix::simcall([this] { pimpl_->resume(); }); - s4u::Actor::on_resume(this); + s4u::Actor::on_resume(*this); } bool Actor::is_suspended() @@ -284,11 +284,11 @@ void sleep_for(double duration) { if (duration > 0) { kernel::actor::ActorImpl* actor = SIMIX_process_self(); - Actor::on_sleep(actor->iface()); + Actor::on_sleep(*actor->ciface()); simcall_process_sleep(duration); - Actor::on_wake_up(actor->iface()); + Actor::on_wake_up(*actor->ciface()); } } @@ -413,7 +413,7 @@ Host* get_host() void suspend() { kernel::actor::ActorImpl* actor = SIMIX_process_self(); - Actor::on_suspend(actor->iface()); + Actor::on_suspend(*actor->ciface()); simcall_process_suspend(actor); } @@ -422,7 +422,7 @@ void resume() { kernel::actor::ActorImpl* self = SIMIX_process_self(); simix::simcall([self] { self->resume(); }); - Actor::on_resume(self->iface()); + Actor::on_resume(*self->ciface()); } void exit() diff --git a/src/s4u/s4u_Comm.cpp b/src/s4u/s4u_Comm.cpp index 39a46e1e6c..d8c952b3c7 100644 --- a/src/s4u/s4u_Comm.cpp +++ b/src/s4u/s4u_Comm.cpp @@ -14,9 +14,9 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(s4u_comm, s4u_activity, "S4U asynchronous commun namespace simgrid { namespace s4u { -xbt::signal Comm::on_sender_start; -xbt::signal Comm::on_receiver_start; -xbt::signal Comm::on_completion; +xbt::signal Comm::on_sender_start; +xbt::signal Comm::on_receiver_start; +xbt::signal Comm::on_completion; Comm::~Comm() { @@ -112,12 +112,12 @@ Comm* Comm::start() __FUNCTION__); if (src_buff_ != nullptr) { // Sender side - on_sender_start(Actor::self()); + on_sender_start(*Actor::self()); pimpl_ = simcall_comm_isend(sender_, mailbox_->get_impl(), remains_, rate_, src_buff_, src_buff_size_, match_fun_, clean_fun_, copy_data_function_, user_data_, detached_); } else if (dst_buff_ != nullptr) { // Receiver side xbt_assert(not detached_, "Receive cannot be detached"); - on_receiver_start(Actor::self()); + on_receiver_start(*Actor::self()); pimpl_ = simcall_comm_irecv(receiver_, mailbox_->get_impl(), dst_buff_, &dst_buff_size_, match_fun_, copy_data_function_, user_data_, rate_); @@ -148,12 +148,12 @@ Comm* Comm::wait_for(double timeout) case State::INITED: // It's not started yet. Do it in one simcall if (src_buff_ != nullptr) { - on_sender_start(Actor::self()); + on_sender_start(*Actor::self()); simcall_comm_send(sender_, mailbox_->get_impl(), remains_, rate_, src_buff_, src_buff_size_, match_fun_, copy_data_function_, user_data_, timeout); } else { // Receiver - on_receiver_start(Actor::self()); + on_receiver_start(*Actor::self()); simcall_comm_recv(receiver_, mailbox_->get_impl(), dst_buff_, &dst_buff_size_, match_fun_, copy_data_function_, user_data_, timeout, rate_); } @@ -162,7 +162,7 @@ Comm* Comm::wait_for(double timeout) case State::STARTED: simcall_comm_wait(pimpl_, timeout); - on_completion(Actor::self()); + on_completion(*Actor::self()); state_ = State::FINISHED; break; diff --git a/src/s4u/s4u_Exec.cpp b/src/s4u/s4u_Exec.cpp index c3431b5efb..75a2162cc7 100644 --- a/src/s4u/s4u_Exec.cpp +++ b/src/s4u/s4u_Exec.cpp @@ -12,8 +12,8 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(s4u_exec, s4u_activity, "S4U asynchronous execut namespace simgrid { namespace s4u { -xbt::signal Exec::on_start; -xbt::signal Exec::on_completion; +xbt::signal Exec::on_start; +xbt::signal Exec::on_completion; Exec::Exec() { @@ -44,7 +44,7 @@ Exec* Exec::wait() start(); simcall_execution_wait(pimpl_); state_ = State::FINISHED; - on_completion(Actor::self()); + on_completion(*Actor::self()); return this; } @@ -130,7 +130,7 @@ Exec* ExecSeq::start() boost::static_pointer_cast(pimpl_)->start(flops_amount_, 1. / priority_, bound_); }); state_ = State::STARTED; - on_start(Actor::self()); + on_start(*Actor::self()); return this; } @@ -191,7 +191,7 @@ Exec* ExecPar::start() boost::static_pointer_cast(pimpl_)->start(hosts_, flops_amounts_, bytes_amounts_); }); state_ = State::STARTED; - on_start(Actor::self()); + on_start(*Actor::self()); return this; } double ExecPar::get_remaining_ratio() diff --git a/src/s4u/s4u_Host.cpp b/src/s4u/s4u_Host.cpp index 746d4d3bd0..318727b216 100644 --- a/src/s4u/s4u_Host.cpp +++ b/src/s4u/s4u_Host.cpp @@ -25,9 +25,9 @@ template class Extendable; namespace s4u { xbt::signal Host::on_creation; -xbt::signal Host::on_destruction; -xbt::signal Host::on_state_change; -xbt::signal Host::on_speed_change; +xbt::signal Host::on_destruction; +xbt::signal Host::on_state_change; +xbt::signal Host::on_speed_change; Host::Host(const std::string& name) : name_(name) { diff --git a/src/s4u/s4u_Link.cpp b/src/s4u/s4u_Link.cpp index 3b349735b5..92bd54b79b 100644 --- a/src/s4u/s4u_Link.cpp +++ b/src/s4u/s4u_Link.cpp @@ -19,11 +19,11 @@ namespace simgrid { namespace s4u { xbt::signal Link::on_creation; -xbt::signal Link::on_destruction; -xbt::signal Link::on_state_change; -xbt::signal Link::on_bandwidth_change; -xbt::signal Link::on_communicate; -xbt::signal +xbt::signal Link::on_destruction; +xbt::signal Link::on_state_change; +xbt::signal Link::on_bandwidth_change; +xbt::signal Link::on_communicate; +xbt::signal Link::on_communication_state_change; Link* Link::by_name(const std::string& name) diff --git a/src/s4u/s4u_Netzone.cpp b/src/s4u/s4u_Netzone.cpp index da6c96344b..cb45e8ea74 100644 --- a/src/s4u/s4u_Netzone.cpp +++ b/src/s4u/s4u_Netzone.cpp @@ -16,10 +16,10 @@ namespace s4u { xbt::signal& link_list)> + std::vector const& link_list)> NetZone::on_route_creation; -xbt::signal NetZone::on_creation; -xbt::signal NetZone::on_seal; +xbt::signal NetZone::on_creation; +xbt::signal NetZone::on_seal; NetZone::NetZone(kernel::routing::NetZoneImpl* impl) : pimpl_(impl) {} diff --git a/src/s4u/s4u_Storage.cpp b/src/s4u/s4u_Storage.cpp index cabbcb0429..0be7985d0f 100644 --- a/src/s4u/s4u_Storage.cpp +++ b/src/s4u/s4u_Storage.cpp @@ -18,8 +18,8 @@ template class Extendable; namespace s4u { xbt::signal Storage::on_creation; -xbt::signal Storage::on_destruction; -xbt::signal Storage::on_state_change; +xbt::signal Storage::on_destruction; +xbt::signal Storage::on_state_change; Storage::Storage(const std::string& name, kernel::resource::StorageImpl* pimpl) : pimpl_(pimpl), name_(name) { diff --git a/src/simix/smx_global.cpp b/src/simix/smx_global.cpp index 108ba80fea..b44d2c8648 100644 --- a/src/simix/smx_global.cpp +++ b/src/simix/smx_global.cpp @@ -212,7 +212,7 @@ void SIMIX_global_init(int *argc, char **argv) sg_platf_init(); simgrid::s4u::on_platform_created.connect(surf_presolve); - simgrid::s4u::Storage::on_creation.connect([](simgrid::s4u::Storage& storage) { + simgrid::s4u::Storage::on_creation.connect([](simgrid::s4u::Storage const& storage) { sg_storage_t s = simgrid::s4u::Storage::by_name(storage.get_name()); xbt_assert(s != nullptr, "Storage not found for name %s", storage.get_cname()); }); diff --git a/src/smpi/internals/smpi_global.cpp b/src/smpi/internals/smpi_global.cpp index bb8f9502d5..26aafa47cf 100644 --- a/src/smpi/internals/smpi_global.cpp +++ b/src/smpi/internals/smpi_global.cpp @@ -73,7 +73,7 @@ std::map units2papi_ std::unordered_map location2speedup; -static std::map process_data; +static std::map process_data; int process_count = 0; static int smpi_exit_status = 0; int smpi_universe_size = 0; @@ -115,12 +115,12 @@ simgrid::smpi::ActorExt* smpi_process() if (me == nullptr) // This happens sometimes (eg, when linking against NS3 because it pulls openMPI...) return nullptr; - return process_data.at(me); + return process_data.at(me.get()); } simgrid::smpi::ActorExt* smpi_process_remote(simgrid::s4u::ActorPtr actor) { - return process_data.at(actor); + return process_data.at(actor.get()); } MPI_Comm smpi_process_comm_self(){ @@ -718,13 +718,13 @@ int smpi_main(const char* executable, int argc, char* argv[]) // Called either directly from the user code, or from the code called by smpirun void SMPI_init(){ - simgrid::s4u::Actor::on_creation.connect([](simgrid::s4u::ActorPtr actor) { - if (not actor->is_daemon()) { - process_data.insert({actor, new simgrid::smpi::ActorExt(actor, nullptr)}); + simgrid::s4u::Actor::on_creation.connect([](simgrid::s4u::Actor& actor) { + if (not actor.is_daemon()) { + process_data.insert({&actor, new simgrid::smpi::ActorExt(&actor, nullptr)}); } }); - simgrid::s4u::Actor::on_destruction.connect([](simgrid::s4u::ActorPtr actor) { - auto it = process_data.find(actor); + simgrid::s4u::Actor::on_destruction.connect([](simgrid::s4u::Actor const& actor) { + auto it = process_data.find(&actor); if (it != process_data.end()) { delete it->second; process_data.erase(it); diff --git a/src/smpi/plugins/ampi/ampi.cpp b/src/smpi/plugins/ampi/ampi.cpp index f18a91179a..6c005be0f5 100644 --- a/src/smpi/plugins/ampi/ampi.cpp +++ b/src/smpi/plugins/ampi/ampi.cpp @@ -65,8 +65,8 @@ namespace simgrid { namespace smpi { namespace plugin { namespace ampi { - simgrid::xbt::signal on_iteration_in; - simgrid::xbt::signal on_iteration_out; +simgrid::xbt::signal on_iteration_in; +simgrid::xbt::signal on_iteration_out; } } } diff --git a/src/smpi/plugins/ampi/ampi.hpp b/src/smpi/plugins/ampi/ampi.hpp index eef8a5a4cb..b31fb73afc 100644 --- a/src/smpi/plugins/ampi/ampi.hpp +++ b/src/smpi/plugins/ampi/ampi.hpp @@ -12,8 +12,8 @@ namespace simgrid { namespace smpi { namespace plugin { namespace ampi { - extern simgrid::xbt::signal on_iteration_out; - extern simgrid::xbt::signal on_iteration_in; +extern simgrid::xbt::signal on_iteration_out; +extern simgrid::xbt::signal on_iteration_in; } } } diff --git a/src/smpi/plugins/sampi_loadbalancer.cpp b/src/smpi/plugins/sampi_loadbalancer.cpp index 3880e19728..72a68ca7b1 100644 --- a/src/smpi/plugins/sampi_loadbalancer.cpp +++ b/src/smpi/plugins/sampi_loadbalancer.cpp @@ -112,7 +112,7 @@ void action_iteration_in(simgrid::xbt::ReplayAction& action) { CHECK_ACTION_PARAMS(action, 0, 0) TRACE_Iteration_in(simgrid::s4u::this_actor::get_pid(), nullptr); - simgrid::smpi::plugin::ampi::on_iteration_in(MPI_COMM_WORLD->group()->actor(std::stol(action[0]))); + simgrid::smpi::plugin::ampi::on_iteration_in(*MPI_COMM_WORLD->group()->actor(std::stol(action[0]))); } XBT_PRIVATE void action_iteration_out(simgrid::xbt::ReplayAction& action); @@ -120,7 +120,7 @@ void action_iteration_out(simgrid::xbt::ReplayAction& action) { CHECK_ACTION_PARAMS(action, 0, 0) TRACE_Iteration_out(simgrid::s4u::this_actor::get_pid(), nullptr); - simgrid::smpi::plugin::ampi::on_iteration_out(MPI_COMM_WORLD->group()->actor(std::stol(action[0]))); + simgrid::smpi::plugin::ampi::on_iteration_out(*MPI_COMM_WORLD->group()->actor(std::stol(action[0]))); } } } @@ -136,8 +136,9 @@ void sg_load_balancer_plugin_init() static bool done = false; if (!done) { done = true; - simgrid::kernel::activity::ExecImpl::on_completion.connect([](simgrid::kernel::activity::ExecImplPtr activity){ - simgrid::smpi::plugin::lb.record_actor_computation(activity->simcalls_.front()->issuer->iface(), activity->surf_action_->get_cost()); + simgrid::kernel::activity::ExecImpl::on_completion.connect([](simgrid::kernel::activity::ExecImpl const& activity) { + simgrid::smpi::plugin::lb.record_actor_computation(activity.simcalls_.front()->issuer->iface(), + activity.surf_action_->get_cost()); }); xbt_replay_action_register( diff --git a/src/surf/StorageImpl.cpp b/src/surf/StorageImpl.cpp index 18c9ac67d4..9cdc5544eb 100644 --- a/src/surf/StorageImpl.cpp +++ b/src/surf/StorageImpl.cpp @@ -93,7 +93,7 @@ void StorageImpl::turn_off() s4u::Storage::on_state_change(this->piface_); } } -xbt::signal +xbt::signal StorageAction::on_state_change; /********** @@ -103,7 +103,7 @@ void StorageAction::set_state(Action::State state) { Action::State old = get_state(); Action::set_state(state); - on_state_change(this, old, state); + on_state_change(*this, old, state); } } // namespace resource } // namespace kernel diff --git a/src/surf/StorageImpl.hpp b/src/surf/StorageImpl.hpp index 99ef00725f..ff68774eb4 100644 --- a/src/surf/StorageImpl.hpp +++ b/src/surf/StorageImpl.hpp @@ -128,7 +128,7 @@ public: * @details Callback functions have the following signature: `void(StorageAction& action, * simgrid::kernel::resource::Action::State old, simgrid::kernel::resource::Action::State current)` */ - static xbt::signal on_state_change; + static xbt::signal on_state_change; /** * @brief StorageAction constructor diff --git a/src/surf/cpu_interface.cpp b/src/surf/cpu_interface.cpp index 83a6e16d01..db1bd195e6 100644 --- a/src/surf/cpu_interface.cpp +++ b/src/surf/cpu_interface.cpp @@ -164,17 +164,17 @@ void CpuAction::update_remains_lazy(double now) set_last_value(get_variable()->get_value()); } -simgrid::xbt::signal CpuAction::on_state_change; +simgrid::xbt::signal CpuAction::on_state_change; void CpuAction::suspend(){ Action::State previous = get_state(); - on_state_change(this, previous); + on_state_change(*this, previous); Action::suspend(); } void CpuAction::resume(){ Action::State previous = get_state(); - on_state_change(this, previous); + on_state_change(*this, previous); Action::resume(); } @@ -182,7 +182,7 @@ void CpuAction::set_state(Action::State state) { Action::State previous = get_state(); Action::set_state(state); - on_state_change(this, previous); + on_state_change(*this, previous); } /** @brief returns a list of all CPUs that this action is using */ diff --git a/src/surf/cpu_interface.hpp b/src/surf/cpu_interface.hpp index 27aa3c9f8f..16ecdfd10f 100644 --- a/src/surf/cpu_interface.hpp +++ b/src/surf/cpu_interface.hpp @@ -166,9 +166,10 @@ protected: class XBT_PUBLIC CpuAction : public simgrid::kernel::resource::Action { public: /** @brief Signal emitted when the action state changes (ready/running/done, etc) - * Signature: `void(CpuAction *action, simgrid::kernel::resource::Action::State previous)` + * Signature: `void(CpuAction const& action, simgrid::kernel::resource::Action::State previous)` */ - static simgrid::xbt::signal on_state_change; + static simgrid::xbt::signal + on_state_change; CpuAction(simgrid::kernel::resource::Model * model, double cost, bool failed) : Action(model, cost, failed) {} CpuAction(simgrid::kernel::resource::Model * model, double cost, bool failed, kernel::lmm::Variable* var) diff --git a/src/surf/network_cm02.cpp b/src/surf/network_cm02.cpp index 2f78a0de72..5bc6070998 100644 --- a/src/surf/network_cm02.cpp +++ b/src/surf/network_cm02.cpp @@ -296,7 +296,7 @@ Action* NetworkCm02Model::communicate(s4u::Host* src, s4u::Host* dst, double siz } XBT_OUT(); - simgrid::s4u::Link::on_communicate(action, src, dst); + simgrid::s4u::Link::on_communicate(*action, src, dst); return action; } diff --git a/src/surf/network_constant.cpp b/src/surf/network_constant.cpp index c8a5bcb924..26ae955581 100644 --- a/src/surf/network_constant.cpp +++ b/src/surf/network_constant.cpp @@ -72,7 +72,7 @@ kernel::resource::Action* NetworkConstantModel::communicate(s4u::Host* src, s4u: { NetworkConstantAction* action = new NetworkConstantAction(this, size, sg_latency_factor); - simgrid::s4u::Link::on_communicate(action, src, dst); + simgrid::s4u::Link::on_communicate(*action, src, dst); return action; } diff --git a/src/surf/network_ib.cpp b/src/surf/network_ib.cpp index 344cf11f0d..afdd57061f 100644 --- a/src/surf/network_ib.cpp +++ b/src/surf/network_ib.cpp @@ -14,7 +14,8 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(surf_network); -static void IB_create_host_callback(simgrid::s4u::Host& host){ +static void IB_create_host_callback(simgrid::s4u::Host const& host) +{ using simgrid::kernel::resource::IBNode; using simgrid::kernel::resource::NetworkIBModel; @@ -27,24 +28,23 @@ static void IB_create_host_callback(simgrid::s4u::Host& host){ ((NetworkIBModel*)surf_network_model)->active_nodes.insert({host.get_name(), act}); } -static void IB_action_state_changed_callback(simgrid::kernel::resource::NetworkAction* action, +static void IB_action_state_changed_callback(simgrid::kernel::resource::NetworkAction& action, simgrid::kernel::resource::Action::State /*previous*/) { using simgrid::kernel::resource::IBNode; using simgrid::kernel::resource::NetworkIBModel; - if (action->get_state() != simgrid::kernel::resource::Action::State::FINISHED) + if (action.get_state() != simgrid::kernel::resource::Action::State::FINISHED) return; - std::pair pair = ((NetworkIBModel*)surf_network_model)->active_comms[action]; - XBT_DEBUG("IB callback - action %p finished", action); - - ((NetworkIBModel*)surf_network_model)->updateIBfactors(action, pair.first, pair.second, 1); + std::pair pair = ((NetworkIBModel*)surf_network_model)->active_comms[&action]; + XBT_DEBUG("IB callback - action %p finished", &action); - ((NetworkIBModel*)surf_network_model)->active_comms.erase(action); + ((NetworkIBModel*)surf_network_model)->updateIBfactors(&action, pair.first, pair.second, 1); + ((NetworkIBModel*)surf_network_model)->active_comms.erase(&action); } -static void IB_action_init_callback(simgrid::kernel::resource::NetworkAction* action, simgrid::s4u::Host* src, +static void IB_action_init_callback(simgrid::kernel::resource::NetworkAction& action, simgrid::s4u::Host* src, simgrid::s4u::Host* dst) { simgrid::kernel::resource::NetworkIBModel* ibModel = (simgrid::kernel::resource::NetworkIBModel*)surf_network_model; @@ -65,9 +65,9 @@ static void IB_action_init_callback(simgrid::kernel::resource::NetworkAction* ac throw std::out_of_range(std::string("Could not find '") + dst->get_cname() + "' active comms !"); } - ibModel->active_comms[action]=std::make_pair(act_src, act_dst); + ibModel->active_comms[&action] = std::make_pair(act_src, act_dst); - ibModel->updateIBfactors(action, act_src, act_dst, 0); + ibModel->updateIBfactors(&action, act_src, act_dst, 0); } /********* diff --git a/src/surf/network_interface.cpp b/src/surf/network_interface.cpp index b430e8f447..530b483ad7 100644 --- a/src/surf/network_interface.cpp +++ b/src/surf/network_interface.cpp @@ -166,7 +166,7 @@ void NetworkAction::set_state(Action::State state) Action::State previous = get_state(); Action::set_state(state); if (previous != state) // Trigger only if the state changed - s4u::Link::on_communication_state_change(this, previous); + s4u::Link::on_communication_state_change(*this, previous); } /** @brief returns a list of all Links that this action is using */ diff --git a/src/surf/network_ns3.cpp b/src/surf/network_ns3.cpp index 109906a1e2..63c4a27d52 100644 --- a/src/surf/network_ns3.cpp +++ b/src/surf/network_ns3.cpp @@ -64,32 +64,32 @@ NetPointNs3::NetPointNs3() * Callbacks * *************/ -static void clusterCreation_cb(simgrid::kernel::routing::ClusterCreationArgs* cluster) +static void clusterCreation_cb(simgrid::kernel::routing::ClusterCreationArgs const& cluster) { - for (int const& i : *cluster->radicals) { + for (int const& i : *cluster.radicals) { // Routers don't create a router on the other end of the private link by themselves. // We just need this router to be given an ID so we create a temporary NetPointNS3 so that it gets one NetPointNs3* host_dst = new NetPointNs3(); // Create private link - std::string host_id = cluster->prefix + std::to_string(i) + cluster->suffix; + std::string host_id = cluster.prefix + std::to_string(i) + cluster.suffix; NetPointNs3* host_src = simgrid::s4u::Host::by_name(host_id)->pimpl_netpoint->extension(); xbt_assert(host_src, "Cannot find a NS3 host of name %s", host_id.c_str()); // Any NS3 route is symmetrical - ns3_add_link(host_src, host_dst, cluster->bw, cluster->lat); + ns3_add_link(host_src, host_dst, cluster.bw, cluster.lat); delete host_dst; } //Create link backbone - ns3_add_cluster(cluster->id.c_str(), cluster->bb_bw, cluster->bb_lat); + ns3_add_cluster(cluster.id.c_str(), cluster.bb_bw, cluster.bb_lat); } static void routeCreation_cb(bool symmetrical, simgrid::kernel::routing::NetPoint* src, simgrid::kernel::routing::NetPoint* dst, simgrid::kernel::routing::NetPoint* gw_src, simgrid::kernel::routing::NetPoint* gw_dst, - std::vector& link_list) + std::vector const& link_list) { if (link_list.size() == 1) { simgrid::kernel::resource::LinkNS3* link = static_cast(link_list[0]); @@ -159,9 +159,9 @@ NetworkNS3Model::NetworkNS3Model() : NetworkModel(Model::UpdateAlgo::FULL) ns3_initialize(ns3_tcp_model.get().c_str()); - simgrid::kernel::routing::NetPoint::on_creation.connect([](simgrid::kernel::routing::NetPoint* pt) { - pt->extension_set(new NetPointNs3()); - XBT_VERB("SimGrid's %s is known as node %d within NS3", pt->get_cname(), pt->extension()->node_num); + simgrid::kernel::routing::NetPoint::on_creation.connect([](simgrid::kernel::routing::NetPoint& pt) { + pt.extension_set(new NetPointNs3()); + XBT_VERB("SimGrid's %s is known as node %d within NS3", pt.get_cname(), pt.extension()->node_num); }); simgrid::surf::on_cluster.connect(&clusterCreation_cb); @@ -328,7 +328,7 @@ NetworkNS3Action::NetworkNS3Action(kernel::resource::Model* model, double totalB port_number++; xbt_assert(port_number <= 65000, "Too many connections! Port number is saturated."); - s4u::Link::on_communicate(this, src, dst); + s4u::Link::on_communicate(*this, src, dst); } void NetworkNS3Action::suspend() { diff --git a/src/surf/sg_platf.cpp b/src/surf/sg_platf.cpp index 5eac4b444f..1e04af4a01 100644 --- a/src/surf/sg_platf.cpp +++ b/src/surf/sg_platf.cpp @@ -33,7 +33,7 @@ XBT_PRIVATE std::vector known_storages; namespace simgrid { namespace surf { -simgrid::xbt::signal on_cluster; +simgrid::xbt::signal on_cluster; } } @@ -285,7 +285,7 @@ void sg_platf_new_cluster(simgrid::kernel::routing::ClusterCreationArgs* cluster XBT_DEBUG(""); sg_platf_new_Zone_seal(); - simgrid::surf::on_cluster(cluster); + simgrid::surf::on_cluster(*cluster); delete cluster->radicals; } diff --git a/src/surf/xml/platf_private.hpp b/src/surf/xml/platf_private.hpp index 713cbeeb85..0ab1fa261e 100644 --- a/src/surf/xml/platf_private.hpp +++ b/src/surf/xml/platf_private.hpp @@ -227,7 +227,7 @@ XBT_PUBLIC int surf_parse_lex_destroy(); namespace simgrid { namespace surf { -extern XBT_PRIVATE simgrid::xbt::signal on_cluster; +extern XBT_PRIVATE simgrid::xbt::signal on_cluster; } } -- 2.20.1