From: Frederic Suter Date: Sun, 3 Feb 2019 19:25:08 +0000 (+0100) Subject: set_kill_time is a method of ActorImpl X-Git-Tag: v3_22~402 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/578097cadd95b9203ed14080e1d3c832b56ddca9?hp=f0a8a2d708e0a6a1cffac49fbc83d451fe8203a8 set_kill_time is a method of ActorImpl --- diff --git a/include/simgrid/simix.h b/include/simgrid/simix.h index 29a5655f47..74d5ad94fa 100644 --- a/include/simgrid/simix.h +++ b/include/simgrid/simix.h @@ -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() diff --git a/src/s4u/s4u_Actor.cpp b/src/s4u/s4u_Actor.cpp index 5e2988b6e8..7e1d404bc6 100644 --- a/src/s4u/s4u_Actor.cpp +++ b/src/s4u/s4u_Actor.cpp @@ -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). */ diff --git a/src/simix/ActorImpl.cpp b/src/simix/ActorImpl.cpp index 6560ccd4e4..c1d3170ca9 100644 --- a/src/simix/ActorImpl.cpp +++ b/src/simix/ActorImpl.cpp @@ -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* 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(); diff --git a/src/simix/ActorImpl.hpp b/src/simix/ActorImpl.hpp index 5db9e6514f..6bb14de810 100644 --- a/src/simix/ActorImpl.hpp +++ b/src/simix/ActorImpl.hpp @@ -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 */ diff --git a/src/simix/libsmx.cpp b/src/simix/libsmx.cpp index 326c501e09..6f11ad4b44 100644 --- a/src/simix/libsmx.cpp +++ b/src/simix/libsmx.cpp @@ -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. diff --git a/src/surf/HostImpl.cpp b/src/surf/HostImpl.cpp index 012ad13ce8..47154c6d25 100644 --- a/src/surf/HostImpl.cpp +++ b/src/surf/HostImpl.cpp @@ -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_) diff --git a/src/surf/sg_platf.cpp b/src/surf/sg_platf.cpp index 0e8dce3f45..d4872dcfbd 100644 --- a/src/surf/sg_platf.cpp +++ b/src/surf/sg_platf.cpp @@ -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); }