- if (h->isOff()) {
- simgrid::surf::HostImpl* surf_host = h->extension<simgrid::surf::HostImpl>();
- surf_host->turnOn();
-
- unsigned int cpt;
- smx_process_arg_t arg;
- xbt_dynar_foreach(host->boot_processes,cpt,arg) {
- XBT_DEBUG("Booting Process %s(%s) right now",
- arg->name.c_str(), arg->hostname);
- if (simix_global->create_process_function) {
- simix_global->create_process_function(arg->name.c_str(),
- arg->code,
- nullptr,
- arg->hostname,
- arg->kill_time,
- arg->properties,
- arg->auto_restart,
- nullptr);
- } else {
- simcall_process_create(arg->name.c_str(),
- arg->code,
- nullptr,
- arg->hostname,
- arg->kill_time,
- arg->properties,
- arg->auto_restart);
+ /** Re-starts all the actors that are marked as restartable.
+ *
+ * Weird things will happen if you turn on an host that is already on. S4U is fool-proof, not this.
+ */
+ void Host::turnOn()
+ {
+ unsigned int cpt;
+ smx_process_arg_t arg;
+ xbt_dynar_foreach(boot_processes,cpt,arg) {
+ XBT_DEBUG("Booting Process %s(%s) right now", arg->name.c_str(), arg->hostname);
+ // FIXME: factorize this code by registering the simcall as default function
+ if (simix_global->create_process_function) {
+ simix_global->create_process_function(arg->name.c_str(),
+ arg->code,
+ nullptr,
+ arg->hostname,
+ arg->kill_time,
+ arg->properties,
+ arg->auto_restart,
+ nullptr);
+ } else {
+ simcall_process_create(arg->name.c_str(),
+ arg->code,
+ nullptr,
+ arg->hostname,
+ arg->kill_time,
+ arg->properties,
+ arg->auto_restart);
+ }