-void VirtualMachineImpl::restore()
-{
- vmState_ = SURF_VM_STATE_RESTORING;
- action_->resume();
- vmState_ = SURF_VM_STATE_RUNNING;
+ xbt_swag_t process_list = piface_->extension<simgrid::simix::Host>()->process_list;
+ XBT_DEBUG("shutdown VM %s, that contains %d processes", piface_->getCname(), xbt_swag_size(process_list));
+
+ smx_actor_t smx_process;
+ smx_actor_t smx_process_safe;
+ xbt_swag_foreach_safe(smx_process, smx_process_safe, process_list) {
+ XBT_DEBUG("kill %s@%s on behalf of %s which shutdown that VM.", smx_process->cname(), smx_process->host->getCname(),
+ issuer->cname());
+ SIMIX_process_kill(smx_process, issuer);
+ }
+
+ setState(SURF_VM_STATE_DESTROYED);
+
+ /* FIXME: we may have to do something at the surf layer, e.g., vcpu action */