Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
SIMIX_process_killall becomes ActorImp::kill_all
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Tue, 12 Feb 2019 13:02:26 +0000 (14:02 +0100)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Tue, 12 Feb 2019 13:02:26 +0000 (14:02 +0100)
src/s4u/s4u_Actor.cpp
src/simix/ActorImpl.cpp
src/simix/ActorImpl.hpp
src/simix/smx_global.cpp

index 794920c..3713c6d 100644 (file)
@@ -218,7 +218,7 @@ ActorPtr Actor::by_pid(aid_t pid)
 void Actor::kill_all()
 {
   smx_actor_t self = SIMIX_process_self();
-  simgrid::simix::simcall([&self] { SIMIX_process_killall(self); });
+  simgrid::simix::simcall([self] { self->kill_all(); });
 }
 
 std::unordered_map<std::string, std::string>* Actor::get_properties()
index ac2292e..71605ce 100644 (file)
@@ -177,6 +177,13 @@ void ActorImpl::kill(smx_actor_t actor)
   }
 }
 
+void ActorImpl::kill_all()
+{
+  for (auto const& kv : simix_global->process_list)
+    if (kv.second != this)
+      this->kill(kv.second);
+}
+
 void ActorImpl::set_kill_time(double kill_time)
 {
   if (kill_time <= SIMIX_get_clock())
@@ -530,17 +537,6 @@ void SIMIX_process_throw(smx_actor_t actor, xbt_errcat_t cat, int value, const c
   actor->waiting_synchro = nullptr;
 }
 
-/**
- * @brief Kills all running processes.
- * @param issuer this one will not be killed
- */
-void SIMIX_process_killall(smx_actor_t issuer)
-{
-  for (auto const& kv : simix_global->process_list)
-    if (kv.second != issuer)
-      issuer->kill(kv.second);
-}
-
 void simcall_HANDLER_process_suspend(smx_simcall_t simcall, smx_actor_t actor)
 {
   smx_activity_t sync_suspend = actor->suspend(simcall->issuer);
index 35a9556..209a21a 100644 (file)
@@ -96,6 +96,7 @@ public:
                              std::unordered_map<std::string, std::string>* properties, smx_actor_t parent_actor);
   void exit();
   void kill(smx_actor_t actor);
+  void kill_all();
 
   void daemonize();
   bool is_daemon() { return daemon_; } /** Whether this actor has been daemonized */
@@ -161,7 +162,6 @@ XBT_PUBLIC void create_maestro(std::function<void()> code);
 typedef simgrid::kernel::actor::ActorImpl* smx_actor_t;
 
 XBT_PRIVATE void SIMIX_process_runall();
-XBT_PRIVATE void SIMIX_process_killall(smx_actor_t issuer);
 XBT_PRIVATE void SIMIX_process_cleanup(smx_actor_t arg);
 XBT_PRIVATE void SIMIX_process_empty_trash();
 XBT_PRIVATE void SIMIX_process_yield(smx_actor_t self);
index 7e40401..c696cab 100644 (file)
@@ -240,7 +240,7 @@ void SIMIX_clean()
 #endif
 
   /* Kill all processes (but maestro) */
-  SIMIX_process_killall(simix_global->maestro_process);
+  simix_global->maestro_process->kill_all();
   SIMIX_context_runall();
   SIMIX_process_empty_trash();