Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
set_kill_time is a method of ActorImpl
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Sun, 3 Feb 2019 19:25:08 +0000 (20:25 +0100)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Sun, 3 Feb 2019 19:25:08 +0000 (20:25 +0100)
include/simgrid/simix.h
src/s4u/s4u_Actor.cpp
src/simix/ActorImpl.cpp
src/simix/ActorImpl.hpp
src/simix/libsmx.cpp
src/surf/HostImpl.cpp
src/surf/sg_platf.cpp

index 29a5655..74d5ad9 100644 (file)
@@ -190,10 +190,8 @@ XBT_ATTRIB_DEPRECATED_v324("Please use ActorImpl::throw_exception") XBT_PUBLIC
 
 /* Process handling */
 XBT_PUBLIC void simcall_process_suspend(smx_actor_t process);
-
-/* Getters and Setters */
-XBT_PUBLIC void simcall_process_set_kill_time(smx_actor_t process, double kill_time);
 XBT_PUBLIC void simcall_process_join(smx_actor_t process, double timeout);
+
 /* Sleep control */
 XBT_PUBLIC e_smx_state_t simcall_process_sleep(double duration);
 SG_END_DECL()
index 5e2988b..7e1d404 100644 (file)
@@ -164,9 +164,9 @@ bool Actor::is_suspended()
   return simgrid::simix::simcall([this] { return pimpl_->suspended_; });
 }
 
-void Actor::set_kill_time(double time)
+void Actor::set_kill_time(double kill_time)
 {
-  simcall_process_set_kill_time(pimpl_, time);
+  simgrid::simix::simcall([this, kill_time] { pimpl_->set_kill_time(kill_time); });
 }
 
 /** @brief Get the kill time of an actor(or 0 if unset). */
index 6560ccd..c1d3170 100644 (file)
@@ -105,6 +105,17 @@ ActorImpl::~ActorImpl()
   delete this->context_;
 }
 
+void ActorImpl::set_kill_time(double kill_time)
+{
+  if (kill_time <= SIMIX_get_clock())
+    return;
+  XBT_DEBUG("Set kill time %f for process %s@%s", kill_time, get_cname(), host_->get_cname());
+  kill_timer = SIMIX_timer_set(kill_time, [this] {
+    SIMIX_process_kill(this, nullptr);
+    kill_timer = nullptr;
+  });
+}
+
 static void dying_daemon(int /*exit_status*/, void* data)
 {
   std::vector<ActorImpl*>* vect = &simix_global->daemons;
@@ -140,7 +151,7 @@ simgrid::s4u::Actor* ActorImpl::restart()
   // start the new process
   ActorImpl* actor =
       SIMIX_process_create(arg.name, std::move(arg.code), arg.data, arg.host, arg.properties.get(), nullptr);
-  simcall_process_set_kill_time(actor, arg.kill_time);
+  actor->set_kill_time(arg.kill_time);
   actor->set_auto_restart(arg.auto_restart);
 
   return actor->ciface();
index 5db9e65..6bb14de 100644 (file)
@@ -29,7 +29,7 @@ public:
   ~ActorImpl();
 
   void set_auto_restart(bool autorestart) { auto_restart_ = autorestart; }
-
+  void set_kill_time(double kill_time);
   boost::intrusive::list_member_hook<> host_process_list_hook; /* simgrid::simix::Host::process_list */
   boost::intrusive::list_member_hook<> smx_destroy_list_hook;  /* simix_global->process_to_destroy */
   boost::intrusive::list_member_hook<> smx_synchro_hook;       /* {mutex,cond,sem}->sleeping */
index 326c501..6f11ad4 100644 (file)
@@ -93,22 +93,6 @@ void simcall_process_suspend(smx_actor_t process)
   simcall_BODY_process_suspend(process);
 }
 
-/**
- * @ingroup simix_process_management
- * @brief Set the kill time of a process.
- */
-void simcall_process_set_kill_time(smx_actor_t process, double kill_time)
-{
-
-  if (kill_time <= SIMIX_get_clock())
-    return;
-  XBT_DEBUG("Set kill time %f for process %s@%s", kill_time, process->get_cname(), process->host_->get_cname());
-  process->kill_timer = SIMIX_timer_set(kill_time, [process] {
-    SIMIX_process_kill(process, nullptr);
-    process->kill_timer=nullptr;
-  });
-}
-
 /**
  * @ingroup simix_process_management
  * @brief Creates a new sleep SIMIX synchro.
index 012ad13..47154c6 100644 (file)
@@ -106,7 +106,7 @@ void HostImpl::turn_on()
     smx_actor_t actor =
         SIMIX_process_create(arg->name.c_str(), arg->code, nullptr, arg->host, arg->properties.get(), nullptr);
     if (arg->kill_time >= 0)
-      simcall_process_set_kill_time(actor, arg->kill_time);
+      actor->set_kill_time(arg->kill_time);
     if (arg->auto_restart)
       actor->auto_restart_ = arg->auto_restart;
     if (arg->daemon_)
index 0e8dce3..d4872dc 100644 (file)
@@ -455,7 +455,7 @@ void sg_platf_new_actor(simgrid::kernel::routing::ActorCreationArgs* actor)
       smx_actor_t actor = SIMIX_process_create(arg->name.c_str(), std::move(arg->code), arg->data, arg->host,
                                                arg->properties.get(), nullptr);
       if (arg->kill_time >= 0)
-        simcall_process_set_kill_time(actor, arg->kill_time);
+        actor->set_kill_time(arg->kill_time);
       if (auto_restart)
         actor->set_auto_restart(auto_restart);
       delete arg;
@@ -469,7 +469,7 @@ void sg_platf_new_actor(simgrid::kernel::routing::ActorCreationArgs* actor)
     /* The actor creation will fail if the host is currently dead, but that's fine */
     if (actor != nullptr) {
       if (arg->kill_time >= 0)
-        simcall_process_set_kill_time(actor, arg->kill_time);
+        actor->set_kill_time(arg->kill_time);
       if (auto_restart)
         actor->set_auto_restart(auto_restart);
     }