Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Use a reference as parameter for signal callbacks.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Mon, 18 Mar 2019 13:16:12 +0000 (14:16 +0100)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Mon, 18 Mar 2019 13:16:12 +0000 (14:16 +0100)
Two benefits:
* no more overhead for maintaining reference counting;
* assurance that the given parameter is not null.

Also use a const reference whenever possible.

55 files changed:
examples/s4u/actor-exiting/s4u-actor-exiting.cpp
include/simgrid/kernel/routing/NetPoint.hpp
include/simgrid/s4u/Actor.hpp
include/simgrid/s4u/Comm.hpp
include/simgrid/s4u/Exec.hpp
include/simgrid/s4u/Host.hpp
include/simgrid/s4u/Link.hpp
include/simgrid/s4u/NetZone.hpp
include/simgrid/s4u/Storage.hpp
include/simgrid/s4u/VirtualMachine.hpp
src/instr/instr_platform.cpp
src/instr/instr_private.hpp
src/kernel/activity/ActivityImpl.cpp
src/kernel/activity/ActivityImpl.hpp
src/kernel/activity/ExecImpl.cpp
src/kernel/activity/ExecImpl.hpp
src/kernel/activity/IoImpl.cpp
src/kernel/activity/IoImpl.hpp
src/kernel/actor/ActorImpl.cpp
src/kernel/routing/NetPoint.cpp
src/msg/msg_global.cpp
src/msg/msg_process.cpp
src/msg/msg_task.cpp
src/plugins/dirty_page_tracking.cpp
src/plugins/host_dvfs.cpp
src/plugins/host_energy.cpp
src/plugins/host_load.cpp
src/plugins/link_energy.cpp
src/plugins/vm/VirtualMachineImpl.cpp
src/plugins/vm/VirtualMachineImpl.hpp
src/plugins/vm/VmLiveMigration.cpp
src/plugins/vm/s4u_VirtualMachine.cpp
src/s4u/s4u_Actor.cpp
src/s4u/s4u_Comm.cpp
src/s4u/s4u_Exec.cpp
src/s4u/s4u_Host.cpp
src/s4u/s4u_Link.cpp
src/s4u/s4u_Netzone.cpp
src/s4u/s4u_Storage.cpp
src/simix/smx_global.cpp
src/smpi/internals/smpi_global.cpp
src/smpi/plugins/ampi/ampi.cpp
src/smpi/plugins/ampi/ampi.hpp
src/smpi/plugins/sampi_loadbalancer.cpp
src/surf/StorageImpl.cpp
src/surf/StorageImpl.hpp
src/surf/cpu_interface.cpp
src/surf/cpu_interface.hpp
src/surf/network_cm02.cpp
src/surf/network_constant.cpp
src/surf/network_ib.cpp
src/surf/network_interface.cpp
src/surf/network_ns3.cpp
src/surf/sg_platf.cpp
src/surf/xml/platf_private.hpp

index d24aab7..9895d9f 100644 (file)
@@ -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);
index 24b1148..0b239f7 100644 (file)
@@ -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<void(NetPoint*)> on_creation;
+  static simgrid::xbt::signal<void(NetPoint&)> on_creation;
 
   bool operator<(const NetPoint& rhs) const { return name_ < rhs.name_; }
 
index 28e5e37..e5f1878 100644 (file)
@@ -145,23 +145,23 @@ public:
   static ActorPtr self();
 
   /** Signal to others that a new actor has been created **/
-  static xbt::signal<void(ActorPtr)> on_creation;
+  static xbt::signal<void(Actor&)> on_creation;
   /** Signal to others that an actor has been suspended**/
-  static xbt::signal<void(ActorPtr)> on_suspend;
+  static xbt::signal<void(Actor const&)> on_suspend;
   /** Signal to others that an actor has been resumed **/
-  static xbt::signal<void(ActorPtr)> on_resume;
+  static xbt::signal<void(Actor const&)> on_resume;
   /** Signal to others that an actor is sleeping **/
-  static xbt::signal<void(ActorPtr)> on_sleep;
+  static xbt::signal<void(Actor const&)> on_sleep;
   /** Signal to others that an actor wakes up for a sleep **/
-  static xbt::signal<void(ActorPtr)> on_wake_up;
+  static xbt::signal<void(Actor const&)> on_wake_up;
   /** Signal to others that an actor is going to migrated to another host**/
-  static xbt::signal<void(ActorPtr)> on_migration_start;
+  static xbt::signal<void(Actor const&)> on_migration_start;
   /** Signal to others that an actor is has been migrated to another host **/
-  static xbt::signal<void(ActorPtr)> on_migration_end;
+  static xbt::signal<void(Actor const&)> 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<void(ActorPtr)> on_destruction;
+  static xbt::signal<void(Actor const&)> on_destruction;
 
   /** Create an actor from a std::function<void()>
    *
index 26e1399..439bf65 100644 (file)
@@ -44,9 +44,9 @@ public:
 
   virtual ~Comm();
 
-  static xbt::signal<void(ActorPtr)> on_sender_start;
-  static xbt::signal<void(ActorPtr)> on_receiver_start;
-  static xbt::signal<void(ActorPtr)> on_completion;
+  static xbt::signal<void(Actor const&)> on_sender_start;
+  static xbt::signal<void(Actor const&)> on_receiver_start;
+  static xbt::signal<void(Actor const&)> 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. */
index beed7e1..5164ef6 100644 (file)
@@ -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<void(ActorPtr)> on_start;
-  static xbt::signal<void(ActorPtr)> on_completion;
+  static xbt::signal<void(Actor const&)> on_start;
+  static xbt::signal<void(Actor const&)> on_completion;
 
   virtual Exec* start() override          = 0;
   virtual double get_remaining_ratio()    = 0;
index 844c8dd..81a031e 100644 (file)
@@ -53,12 +53,12 @@ public:
   /*** Called on each newly created host */
   static xbt::signal<void(Host&)> on_creation;
   /*** Called just before destructing a host */
-  static xbt::signal<void(Host&)> on_destruction;
+  static xbt::signal<void(Host const&)> on_destruction;
   /*** Called when the machine is turned on or off (called AFTER the change) */
-  static xbt::signal<void(Host&)> on_state_change;
+  static xbt::signal<void(Host const&)> 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<void(Host&)> on_speed_change;
+  static xbt::signal<void(Host const&)> on_speed_change;
 
   virtual void destroy();
   // No copy/move
index 07b0e85..8a9c723 100644 (file)
@@ -101,19 +101,19 @@ public:
   static xbt::signal<void(Link&)> on_creation;
 
   /** @brief Callback signal fired when a Link is destroyed */
-  static xbt::signal<void(Link&)> on_destruction;
+  static xbt::signal<void(Link const&)> on_destruction;
 
   /** @brief Callback signal fired when the state of a Link changes (when it is turned on or off) */
-  static xbt::signal<void(Link&)> on_state_change;
+  static xbt::signal<void(Link const&)> on_state_change;
 
   /** @brief Callback signal fired when the bandwidth of a Link changes */
-  static xbt::signal<void(Link&)> on_bandwidth_change;
+  static xbt::signal<void(Link const&)> on_bandwidth_change;
 
   /** @brief Callback signal fired when a communication starts */
-  static xbt::signal<void(kernel::resource::NetworkAction*, Host* src, Host* dst)> on_communicate;
+  static xbt::signal<void(kernel::resource::NetworkAction&, Host* src, Host* dst)> on_communicate;
 
   /** @brief Callback signal fired when a communication changes it state (ready/done/cancel) */
-  static xbt::signal<void(kernel::resource::NetworkAction*, kernel::resource::Action::State)>
+  static xbt::signal<void(kernel::resource::NetworkAction&, kernel::resource::Action::State)>
       on_communication_state_change;
 
 #ifndef DOXYGEN
index 3855348..815b176 100644 (file)
@@ -69,10 +69,10 @@ public:
   /*** Called on each newly created regular route (not on bypass routes) */
   static xbt::signal<void(bool symmetrical, kernel::routing::NetPoint* src, kernel::routing::NetPoint* dst,
                           kernel::routing::NetPoint* gw_src, kernel::routing::NetPoint* gw_dst,
-                          std::vector<kernel::resource::LinkImpl*>& link_list)>
+                          std::vector<kernel::resource::LinkImpl*> const& link_list)>
       on_route_creation;
-  static xbt::signal<void(NetZone&)> on_creation;
-  static xbt::signal<void(NetZone&)> on_seal;
+  static xbt::signal<void(NetZone const&)> on_creation;
+  static xbt::signal<void(NetZone const&)> on_seal;
 
 #ifndef DOXYGEN
   // Deprecation wrappers
index 569a93a..1b5107b 100644 (file)
@@ -39,9 +39,9 @@ public:
   /** @brief Callback signal fired when a new Storage is created */
   static xbt::signal<void(Storage&)> on_creation;
   /** @brief Callback signal fired when a Storage is destroyed */
-  static xbt::signal<void(Storage&)> on_destruction;
+  static xbt::signal<void(Storage const&)> on_destruction;
   /** @brief Callback signal fired when a Storage's state changes */
-  static xbt::signal<void(Storage&)> on_state_change;
+  static xbt::signal<void(Storage const&)> on_state_change;
 
   /** Retrieve a Storage by its name. It must exist in the platform file */
   static Storage* by_name(const std::string& name);
index 25f2e1b..4dd134d 100644 (file)
@@ -52,13 +52,13 @@ public:
   void set_bound(double bound);
 
   VirtualMachine::state get_state();
-  static xbt::signal<void(VirtualMachine&)> on_start;
-  static xbt::signal<void(VirtualMachine&)> on_started;
-  static xbt::signal<void(VirtualMachine&)> on_shutdown;
-  static xbt::signal<void(VirtualMachine&)> on_suspend;
-  static xbt::signal<void(VirtualMachine&)> on_resume;
-  static xbt::signal<void(VirtualMachine&)> on_migration_start;
-  static xbt::signal<void(VirtualMachine&)> on_migration_end;
+  static xbt::signal<void(VirtualMachine const&)> on_start;
+  static xbt::signal<void(VirtualMachine const&)> on_started;
+  static xbt::signal<void(VirtualMachine const&)> on_shutdown;
+  static xbt::signal<void(VirtualMachine const&)> on_suspend;
+  static xbt::signal<void(VirtualMachine const&)> on_resume;
+  static xbt::signal<void(VirtualMachine const&)> on_migration_start;
+  static xbt::signal<void(VirtualMachine const&)> on_migration_end;
 
 #ifndef DOXYGEN
   // Deprecated methods
index 4bc1e2c..e260779 100644 (file)
@@ -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<simgrid::kernel::resource::Resource*>(action->get_variable()->get_constraint(i)->get_id());
+        static_cast<simgrid::kernel::resource::Resource*>(action.get_variable()->get_constraint(i)->get_id());
     simgrid::surf::Cpu* cpu = dynamic_cast<simgrid::surf::Cpu*>(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<simgrid::kernel::resource::LinkImpl*>(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<simgrid::instr::ContainerType>("ACTOR");
   simgrid::instr::StateType* state = actor_type->by_name_or_create<simgrid::instr::StateType>("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();
+    });
   }
 }
 /*
index c5886f5..985d664 100644 (file)
@@ -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<std::string> created_categories;
 extern XBT_PRIVATE std::set<std::string> declared_marks;
index 757667b..f7f719c 100644 (file)
@@ -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<void(ActivityImplPtr)> ActivityImpl::on_resumed;
-xbt::signal<void(ActivityImplPtr)> ActivityImpl::on_suspended;
+xbt::signal<void(ActivityImpl const&)> ActivityImpl::on_resumed;
+xbt::signal<void(ActivityImpl const&)> ActivityImpl::on_suspended;
 }
 }
 } // namespace simgrid::kernel::activity::
index ffb0231..fdd8ef3 100644 (file)
@@ -48,8 +48,8 @@ private:
   std::string name_;                    /* Activity name if any */
 
 public:
-  static xbt::signal<void(ActivityImplPtr)> on_suspended;
-  static xbt::signal<void(ActivityImplPtr)> on_resumed;
+  static xbt::signal<void(ActivityImpl const&)> on_suspended;
+  static xbt::signal<void(ActivityImpl const&)> on_resumed;
 };
 } // namespace activity
 } // namespace kernel
index 462eb70..fedef08 100644 (file)
@@ -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<s4u::Host*>& 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<void(ExecImplPtr)> ExecImpl::on_creation;
-xbt::signal<void(ExecImplPtr)> ExecImpl::on_completion;
-xbt::signal<void(ExecImplPtr, s4u::Host*)> ExecImpl::on_migration;
+xbt::signal<void(ExecImpl&)> ExecImpl::on_creation;
+xbt::signal<void(ExecImpl const&)> ExecImpl::on_completion;
+xbt::signal<void(ExecImpl const&, s4u::Host*)> ExecImpl::on_migration;
 
 } // namespace activity
 } // namespace kernel
index ea96c28..bf99187 100644 (file)
@@ -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<void(ExecImplPtr)> on_creation;
-  static xbt::signal<void(ExecImplPtr)> on_completion;
-  static xbt::signal<void(ExecImplPtr, s4u::Host*)> on_migration;
+  static xbt::signal<void(ExecImpl&)> on_creation;
+  static xbt::signal<void(ExecImpl const&)> on_completion;
+  static xbt::signal<void(ExecImpl const&, s4u::Host*)> on_migration;
 };
 } // namespace activity
 } // namespace kernel
index 1a08cb3..3bbef38 100644 (file)
@@ -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<void(IoImplPtr)> IoImpl::on_start;
-xbt::signal<void(IoImplPtr)> IoImpl::on_completion;
+xbt::signal<void(IoImpl const&)> IoImpl::on_start;
+xbt::signal<void(IoImpl const&)> IoImpl::on_completion;
 
 } // namespace activity
 } // namespace kernel
index e71a11e..6ab89d9 100644 (file)
@@ -34,8 +34,8 @@ public:
   void cancel();
   double get_remaining();
 
-  static xbt::signal<void(IoImplPtr)> on_start;
-  static xbt::signal<void(IoImplPtr)> on_completion;
+  static xbt::signal<void(IoImpl const&)> on_start;
+  static xbt::signal<void(IoImpl const&)> on_completion;
 };
 } // namespace activity
 } // namespace kernel
index 3aab763..95dc840 100644 (file)
@@ -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);
 }
index f723a2e..434f943 100644 (file)
@@ -13,7 +13,7 @@ namespace simgrid {
 namespace kernel {
 namespace routing {
 
-simgrid::xbt::signal<void(NetPoint*)> NetPoint::on_creation;
+simgrid::xbt::signal<void(NetPoint&)> 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<decltype(id_)>(-1);
   simgrid::s4u::Engine::get_instance()->netpoint_register(this);
-  simgrid::kernel::routing::NetPoint::on_creation(this);
+  simgrid::kernel::routing::NetPoint::on_creation(*this);
 }
 }
 }
index 9c644ff..a985757 100644 (file)
@@ -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<simgrid::msg::ActorUserData>()->get_user_data();
+      void* userdata = actor.extension<simgrid::msg::ActorUserData>()->get_user_data();
       if (userdata && msg_global->process_data_cleanup) {
         msg_global->process_data_cleanup(userdata);
       }
index 9cdb605..e588143 100644 (file)
@@ -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 ************************************/
index b0998af..46adfb4 100644 (file)
@@ -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);
index 807dc1d..0298cd9 100644 (file)
@@ -11,7 +11,7 @@ namespace simgrid {
 namespace vm {
 class DirtyPageTrackingExt {
   bool dp_tracking_ = false;
-  std::map<kernel::activity::ExecImplPtr, double> dp_objs_;
+  std::map<kernel::activity::ExecImpl const*, double> 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<simgrid::vm::DirtyPageTrackingExt>(new simgrid::vm::DirtyPageTrackingExt());
+  vm.extension_set<simgrid::vm::DirtyPageTrackingExt>(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<simgrid::s4u::VirtualMachine*>(exec->host_);
+  simgrid::s4u::VirtualMachine* vm = dynamic_cast<simgrid::s4u::VirtualMachine*>(exec.host_);
   if (vm == nullptr)
     return;
 
   if (vm->get_impl()->extension<simgrid::vm::DirtyPageTrackingExt>()->is_tracking()) {
-    vm->get_impl()->extension<simgrid::vm::DirtyPageTrackingExt>()->track(exec, exec->get_remaining());
+    vm->get_impl()->extension<simgrid::vm::DirtyPageTrackingExt>()->track(&exec, exec.get_remaining());
   } else {
-    vm->get_impl()->extension<simgrid::vm::DirtyPageTrackingExt>()->track(exec, 0.0);
+    vm->get_impl()->extension<simgrid::vm::DirtyPageTrackingExt>()->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<simgrid::s4u::VirtualMachine*>(exec->host_);
+  simgrid::s4u::VirtualMachine* vm = dynamic_cast<simgrid::s4u::VirtualMachine*>(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<simgrid::vm::DirtyPageTrackingExt>()->is_tracking()) {
-    double delta = vm->get_impl()->extension<simgrid::vm::DirtyPageTrackingExt>()->get_stored_remains(exec);
+    double delta = vm->get_impl()->extension<simgrid::vm::DirtyPageTrackingExt>()->get_stored_remains(&exec);
     vm->get_impl()->extension<simgrid::vm::DirtyPageTrackingExt>()->update_dirty_page_count(delta);
   }
-  vm->get_impl()->extension<simgrid::vm::DirtyPageTrackingExt>()->untrack(exec);
+  vm->get_impl()->extension<simgrid::vm::DirtyPageTrackingExt>()->untrack(&exec);
 }
 
 void sg_vm_dirty_page_tracking_init()
index cda87c0..0cca4f8 100644 (file)
@@ -278,36 +278,38 @@ public:
   explicit Adagio(simgrid::s4u::Host* ptr)
       : Governor(ptr), rates(100, std::vector<double>(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();
           }
index f52746b..4e695cd 100644 (file)
@@ -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<simgrid::s4u::VirtualMachine*>(&host)) // Ignore virtual machines
+  if (dynamic_cast<simgrid::s4u::VirtualMachine const*>(&host)) // Ignore virtual machines
     return;
 
   HostEnergy* host_energy = host.extension<HostEnergy>();
@@ -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<simgrid::s4u::VirtualMachine*>(&host)) // Ignore virtual machines
+  if (dynamic_cast<simgrid::s4u::VirtualMachine const*>(&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<simgrid::s4u::VirtualMachine*>(host);
       if (vm != nullptr)
         host = vm->get_pm();
index c529ac8..1688ef3 100644 (file)
@@ -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<simgrid::s4u::VirtualMachine*>(&host)) // Ignore virtual machines
+  if (dynamic_cast<simgrid::s4u::VirtualMachine const*>(&host)) // Ignore virtual machines
     return;
 
   host.extension<HostLoad>()->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<simgrid::s4u::VirtualMachine*>(host);
       if (vm != nullptr)
         host = vm->get_pm();
 
-      host->extension<HostLoad>()->add_activity(activity);
+      host->extension<HostLoad>()->add_activity(&activity);
       host->extension<HostLoad>()->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<simgrid::s4u::VirtualMachine*>(host);
       if (vm != nullptr)
         host = vm->get_pm();
index 5e27abd..ea5cf2d 100644 (file)
@@ -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<LinkEnergy>()->update(); });
+  simgrid::s4u::Link::on_state_change.connect(
+      [](simgrid::s4u::Link const& link) { link.extension<LinkEnergy>()->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<LinkEnergy>()->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<LinkEnergy>()->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<LinkEnergy>()->update();
+    }
+  });
 
   simgrid::s4u::Link::on_communicate.connect(&on_communicate);
   simgrid::s4u::on_simulation_end.connect(&on_simulation_end);
index 8179ece..912c575 100644 (file)
@@ -23,8 +23,8 @@ namespace vm {
 /*************
  * Callbacks *
  *************/
-simgrid::xbt::signal<void(VirtualMachineImpl*)> VirtualMachineImpl::on_creation;
-simgrid::xbt::signal<void(VirtualMachineImpl*)> VirtualMachineImpl::on_destruction;
+simgrid::xbt::signal<void(VirtualMachineImpl&)> VirtualMachineImpl::on_creation;
+simgrid::xbt::signal<void(VirtualMachineImpl const&)> VirtualMachineImpl::on_destruction;
 
 /*********
  * Model *
@@ -38,7 +38,7 @@ std::deque<s4u::VirtualMachine*> 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<s4u::VirtualMachine*> 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<kernel::activity::ExecImpl*>(task.get());
+  auto* exec = dynamic_cast<kernel::activity::ExecImpl const*>(&task);
   return exec != nullptr ? dynamic_cast<s4u::VirtualMachine*>(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())
index e501789..6606520 100644 (file)
@@ -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<void(simgrid::vm::VirtualMachineImpl*)> on_creation;
-  /** @brief Callbacks fired after VM destruction. Signature: `void(VirtualMachineImpl*)` */
-  static xbt::signal<void(simgrid::vm::VirtualMachineImpl*)> on_destruction;
+  /** @brief Callbacks fired after VM creation. Signature: `void(VirtualMachineImpl&)` */
+  static xbt::signal<void(simgrid::vm::VirtualMachineImpl&)> on_creation;
+  /** @brief Callbacks fired after VM destruction. Signature: `void(VirtualMachineImpl const&)` */
+  static xbt::signal<void(simgrid::vm::VirtualMachineImpl const&)> on_destruction;
 
   virtual void suspend(kernel::actor::ActorImpl* issuer);
   virtual void resume();
index a489757..10a8a19 100644 (file)
@@ -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<simgrid::vm::VmMigrationExt>()->rx_->kill();
index 9483c03..f16253c 100644 (file)
@@ -15,13 +15,13 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_vm, "S4U virtual machines");
 
 namespace simgrid {
 namespace s4u {
-simgrid::xbt::signal<void(VirtualMachine&)> VirtualMachine::on_start;
-simgrid::xbt::signal<void(VirtualMachine&)> VirtualMachine::on_started;
-simgrid::xbt::signal<void(VirtualMachine&)> VirtualMachine::on_shutdown;
-simgrid::xbt::signal<void(VirtualMachine&)> VirtualMachine::on_suspend;
-simgrid::xbt::signal<void(VirtualMachine&)> VirtualMachine::on_resume;
-simgrid::xbt::signal<void(VirtualMachine&)> VirtualMachine::on_migration_start;
-simgrid::xbt::signal<void(VirtualMachine&)> VirtualMachine::on_migration_end;
+simgrid::xbt::signal<void(VirtualMachine const&)> VirtualMachine::on_start;
+simgrid::xbt::signal<void(VirtualMachine const&)> VirtualMachine::on_started;
+simgrid::xbt::signal<void(VirtualMachine const&)> VirtualMachine::on_shutdown;
+simgrid::xbt::signal<void(VirtualMachine const&)> VirtualMachine::on_suspend;
+simgrid::xbt::signal<void(VirtualMachine const&)> VirtualMachine::on_resume;
+simgrid::xbt::signal<void(VirtualMachine const&)> VirtualMachine::on_migration_start;
+simgrid::xbt::signal<void(VirtualMachine const&)> VirtualMachine::on_migration_end;
 
 VirtualMachine::VirtualMachine(const std::string& name, s4u::Host* physical_host, int core_amount)
     : VirtualMachine(name, physical_host, core_amount, 1024)
index 7f2a401..01c2763 100644 (file)
@@ -21,14 +21,14 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_actor, "S4U actors");
 namespace simgrid {
 namespace s4u {
 
-xbt::signal<void(ActorPtr)> s4u::Actor::on_creation;
-xbt::signal<void(ActorPtr)> s4u::Actor::on_suspend;
-xbt::signal<void(ActorPtr)> s4u::Actor::on_resume;
-xbt::signal<void(ActorPtr)> s4u::Actor::on_sleep;
-xbt::signal<void(ActorPtr)> s4u::Actor::on_wake_up;
-xbt::signal<void(ActorPtr)> s4u::Actor::on_migration_start;
-xbt::signal<void(ActorPtr)> s4u::Actor::on_migration_end;
-xbt::signal<void(ActorPtr)> s4u::Actor::on_destruction;
+xbt::signal<void(Actor&)> s4u::Actor::on_creation;
+xbt::signal<void(Actor const&)> s4u::Actor::on_suspend;
+xbt::signal<void(Actor const&)> s4u::Actor::on_resume;
+xbt::signal<void(Actor const&)> s4u::Actor::on_sleep;
+xbt::signal<void(Actor const&)> s4u::Actor::on_wake_up;
+xbt::signal<void(Actor const&)> s4u::Actor::on_migration_start;
+xbt::signal<void(Actor const&)> s4u::Actor::on_migration_end;
+xbt::signal<void(Actor const&)> s4u::Actor::on_destruction;
 
 // ***** Actor creation *****
 ActorPtr Actor::self()
@@ -121,7 +121,7 @@ void Actor::on_exit(const std::function<void(bool /*failed*/)>& 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()
index 39a46e1..d8c952b 100644 (file)
@@ -14,9 +14,9 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(s4u_comm, s4u_activity, "S4U asynchronous commun
 
 namespace simgrid {
 namespace s4u {
-xbt::signal<void(ActorPtr)> Comm::on_sender_start;
-xbt::signal<void(ActorPtr)> Comm::on_receiver_start;
-xbt::signal<void(ActorPtr)> Comm::on_completion;
+xbt::signal<void(Actor const&)> Comm::on_sender_start;
+xbt::signal<void(Actor const&)> Comm::on_receiver_start;
+xbt::signal<void(Actor const&)> 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;
 
index c3431b5..75a2162 100644 (file)
@@ -12,8 +12,8 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(s4u_exec, s4u_activity, "S4U asynchronous execut
 
 namespace simgrid {
 namespace s4u {
-xbt::signal<void(ActorPtr)> Exec::on_start;
-xbt::signal<void(ActorPtr)> Exec::on_completion;
+xbt::signal<void(Actor const&)> Exec::on_start;
+xbt::signal<void(Actor const&)> 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<kernel::activity::ExecImpl>(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<kernel::activity::ExecImpl>(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()
index 746d4d3..318727b 100644 (file)
@@ -25,9 +25,9 @@ template class Extendable<s4u::Host>;
 namespace s4u {
 
 xbt::signal<void(Host&)> Host::on_creation;
-xbt::signal<void(Host&)> Host::on_destruction;
-xbt::signal<void(Host&)> Host::on_state_change;
-xbt::signal<void(Host&)> Host::on_speed_change;
+xbt::signal<void(Host const&)> Host::on_destruction;
+xbt::signal<void(Host const&)> Host::on_state_change;
+xbt::signal<void(Host const&)> Host::on_speed_change;
 
 Host::Host(const std::string& name) : name_(name)
 {
index 3b34973..92bd54b 100644 (file)
@@ -19,11 +19,11 @@ namespace simgrid {
 namespace s4u {
 
 xbt::signal<void(Link&)> Link::on_creation;
-xbt::signal<void(Link&)> Link::on_destruction;
-xbt::signal<void(Link&)> Link::on_state_change;
-xbt::signal<void(Link&)> Link::on_bandwidth_change;
-xbt::signal<void(kernel::resource::NetworkAction*, Host* src, Host* dst)> Link::on_communicate;
-xbt::signal<void(kernel::resource::NetworkAction*, kernel::resource::Action::State)>
+xbt::signal<void(Link const&)> Link::on_destruction;
+xbt::signal<void(Link const&)> Link::on_state_change;
+xbt::signal<void(Link const&)> Link::on_bandwidth_change;
+xbt::signal<void(kernel::resource::NetworkAction&, Host* src, Host* dst)> Link::on_communicate;
+xbt::signal<void(kernel::resource::NetworkAction&, kernel::resource::Action::State)>
     Link::on_communication_state_change;
 
 Link* Link::by_name(const std::string& name)
index da6c963..cb45e8e 100644 (file)
@@ -16,10 +16,10 @@ namespace s4u {
 
 xbt::signal<void(bool symmetrical, kernel::routing::NetPoint* src, kernel::routing::NetPoint* dst,
                  kernel::routing::NetPoint* gw_src, kernel::routing::NetPoint* gw_dst,
-                 std::vector<kernel::resource::LinkImpl*>& link_list)>
+                 std::vector<kernel::resource::LinkImpl*> const& link_list)>
     NetZone::on_route_creation;
-xbt::signal<void(NetZone&)> NetZone::on_creation;
-xbt::signal<void(NetZone&)> NetZone::on_seal;
+xbt::signal<void(NetZone const&)> NetZone::on_creation;
+xbt::signal<void(NetZone const&)> NetZone::on_seal;
 
 NetZone::NetZone(kernel::routing::NetZoneImpl* impl) : pimpl_(impl) {}
 
index cabbcb0..0be7985 100644 (file)
@@ -18,8 +18,8 @@ template class Extendable<s4u::Storage>;
 namespace s4u {
 
 xbt::signal<void(Storage&)> Storage::on_creation;
-xbt::signal<void(Storage&)> Storage::on_destruction;
-xbt::signal<void(Storage&)> Storage::on_state_change;
+xbt::signal<void(Storage const&)> Storage::on_destruction;
+xbt::signal<void(Storage const&)> Storage::on_state_change;
 
 Storage::Storage(const std::string& name, kernel::resource::StorageImpl* pimpl) : pimpl_(pimpl), name_(name)
 {
index 108ba80..b44d2c8 100644 (file)
@@ -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());
     });
index bb8f950..26aafa4 100644 (file)
@@ -73,7 +73,7 @@ std::map</* computation unit name */ std::string, papi_process_data> units2papi_
 
 std::unordered_map<std::string, double> location2speedup;
 
-static std::map</*process_id*/ simgrid::s4u::ActorPtr, simgrid::smpi::ActorExt*> process_data;
+static std::map</*process_id*/ simgrid::s4u::Actor const*, simgrid::smpi::ActorExt*> 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);
index f18a911..6c005be 100644 (file)
@@ -65,8 +65,8 @@ namespace simgrid {
 namespace smpi {
 namespace plugin {
 namespace ampi {
-  simgrid::xbt::signal<void(simgrid::s4u::ActorPtr)> on_iteration_in;
-  simgrid::xbt::signal<void(simgrid::s4u::ActorPtr)> on_iteration_out;
+simgrid::xbt::signal<void(simgrid::s4u::Actor const&)> on_iteration_in;
+simgrid::xbt::signal<void(simgrid::s4u::Actor const&)> on_iteration_out;
 }
 }
 }
index eef8a5a..b31fb73 100644 (file)
@@ -12,8 +12,8 @@ namespace simgrid {
 namespace smpi {
 namespace plugin {
 namespace ampi {
-  extern simgrid::xbt::signal<void(simgrid::s4u::ActorPtr)> on_iteration_out;
-  extern simgrid::xbt::signal<void(simgrid::s4u::ActorPtr)> on_iteration_in;
+extern simgrid::xbt::signal<void(simgrid::s4u::Actor const&)> on_iteration_out;
+extern simgrid::xbt::signal<void(simgrid::s4u::Actor const&)> on_iteration_in;
 }
 }
 }
index 3880e19..72a68ca 100644 (file)
@@ -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(
index 18c9ac6..9cdc554 100644 (file)
@@ -93,7 +93,7 @@ void StorageImpl::turn_off()
     s4u::Storage::on_state_change(this->piface_);
   }
 }
-xbt::signal<void(StorageAction*, kernel::resource::Action::State, kernel::resource::Action::State)>
+xbt::signal<void(StorageAction const&, kernel::resource::Action::State, kernel::resource::Action::State)>
     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
index 99ef007..ff68774 100644 (file)
@@ -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<void(StorageAction*, Action::State, Action::State)> on_state_change;
+  static xbt::signal<void(StorageAction const&, Action::State, Action::State)> on_state_change;
 
   /**
    * @brief StorageAction constructor
index 83a6e16..db1bd19 100644 (file)
@@ -164,17 +164,17 @@ void CpuAction::update_remains_lazy(double now)
   set_last_value(get_variable()->get_value());
 }
 
-simgrid::xbt::signal<void(simgrid::surf::CpuAction*, kernel::resource::Action::State)> CpuAction::on_state_change;
+simgrid::xbt::signal<void(simgrid::surf::CpuAction const&, kernel::resource::Action::State)> 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 */
index 27aa3c9..16ecdfd 100644 (file)
@@ -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<void(simgrid::surf::CpuAction*, simgrid::kernel::resource::Action::State)> on_state_change;
+  static simgrid::xbt::signal<void(simgrid::surf::CpuAction const&, simgrid::kernel::resource::Action::State)>
+      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)
index 2f78a0d..5bc6070 100644 (file)
@@ -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;
 }
 
index c8a5bcb..26ae955 100644 (file)
@@ -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;
 }
 
index 344cf11..afdd570 100644 (file)
@@ -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<IBNode*,IBNode*> 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<IBNode*, IBNode*> 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);
 }
 
 /*********
index b430e8f..530b483 100644 (file)
@@ -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 */
index 109906a..63c4a27 100644 (file)
@@ -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<NetPointNs3>();
     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<simgrid::kernel::resource::LinkImpl*>& link_list)
+                             std::vector<simgrid::kernel::resource::LinkImpl*> const& link_list)
 {
   if (link_list.size() == 1) {
     simgrid::kernel::resource::LinkNS3* link = static_cast<simgrid::kernel::resource::LinkNS3*>(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<NetPointNs3>(new NetPointNs3());
-    XBT_VERB("SimGrid's %s is known as node %d within NS3", pt->get_cname(), pt->extension<NetPointNs3>()->node_num);
+  simgrid::kernel::routing::NetPoint::on_creation.connect([](simgrid::kernel::routing::NetPoint& pt) {
+    pt.extension_set<NetPointNs3>(new NetPointNs3());
+    XBT_VERB("SimGrid's %s is known as node %d within NS3", pt.get_cname(), pt.extension<NetPointNs3>()->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() {
index 5eac4b4..1e04af4 100644 (file)
@@ -33,7 +33,7 @@ XBT_PRIVATE std::vector<std::string> known_storages;
 namespace simgrid {
 namespace surf {
 
-simgrid::xbt::signal<void(kernel::routing::ClusterCreationArgs*)> on_cluster;
+simgrid::xbt::signal<void(kernel::routing::ClusterCreationArgs const&)> on_cluster;
 }
 }
 
@@ -285,7 +285,7 @@ void sg_platf_new_cluster(simgrid::kernel::routing::ClusterCreationArgs* cluster
   XBT_DEBUG("</AS>");
   sg_platf_new_Zone_seal();
 
-  simgrid::surf::on_cluster(cluster);
+  simgrid::surf::on_cluster(*cluster);
   delete cluster->radicals;
 }
 
index 713cbee..0ab1fa2 100644 (file)
@@ -227,7 +227,7 @@ XBT_PUBLIC int surf_parse_lex_destroy();
 namespace simgrid {
 namespace surf {
 
-extern XBT_PRIVATE simgrid::xbt::signal<void(kernel::routing::ClusterCreationArgs*)> on_cluster;
+extern XBT_PRIVATE simgrid::xbt::signal<void(kernel::routing::ClusterCreationArgs const&)> on_cluster;
 }
 }