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()
}
}
+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())
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);
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 */
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);
#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();