Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
put the HostImpl as s4u::Host->pimpl instead of as an extension
[simgrid.git] / src / simix / smx_vm.cpp
index c6c9709..fec4850 100644 (file)
@@ -14,7 +14,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_vm, simix, "Logging specific to SIMIX Virt
 static long host_get_ramsize(sg_host_t vm, int *overcommit)
 {
   s_vm_params_t params;
-  vm->extension<simgrid::surf::HostImpl>()->getParams(&params);
+  vm->pimpl_->getParams(&params);
 
   if (overcommit)
     *overcommit = params.overcommit;
@@ -42,7 +42,7 @@ static int __can_be_started(sg_host_t vm)
   }
 
   long total_ramsize_of_vms = 0;
-  xbt_dynar_t dyn_vms = pm->extension<simgrid::surf::HostImpl>()->getVms();
+  xbt_dynar_t dyn_vms = pm->pimpl_->getVms();
   {
     unsigned int cursor = 0;
     sg_host_t another_vm;
@@ -67,7 +67,7 @@ void SIMIX_vm_start(sg_host_t vm)
 {
   if (__can_be_started(vm))
     static_cast<simgrid::surf::VirtualMachine*>(
-      vm->extension<simgrid::surf::HostImpl>()
+      vm->pimpl_
     )->setState(SURF_VM_STATE_RUNNING);
   else
     THROWF(vm_error, 0, "The VM %s cannot be started", vm->name().c_str());
@@ -77,7 +77,7 @@ void SIMIX_vm_start(sg_host_t vm)
 e_surf_vm_state_t SIMIX_vm_get_state(sg_host_t vm)
 {
   return static_cast<simgrid::surf::VirtualMachine*>(
-    vm->extension<simgrid::surf::HostImpl>()
+    vm->pimpl_
   )->getState();
 }
 
@@ -114,7 +114,7 @@ void SIMIX_vm_migratefrom_resumeto(sg_host_t vm, sg_host_t src_pm, sg_host_t dst
  
   /* Resume the VM */
   smx_actor_t self = SIMIX_process_self(); 
-  SIMIX_vm_resume(vm, self->simcall.issuer);
+  SIMIX_vm_resume(vm, self);
 } 
 
 /**
@@ -289,7 +289,7 @@ void SIMIX_vm_shutdown(sg_host_t vm, smx_actor_t issuer)
 
   /* FIXME: we may have to do something at the surf layer, e.g., vcpu action */
   static_cast<simgrid::surf::VirtualMachine*>(
-    vm->extension<simgrid::surf::HostImpl>()
+    vm->pimpl_
   )->setState(SURF_VM_STATE_CREATED);
 }
 
@@ -319,4 +319,6 @@ void SIMIX_vm_destroy(sg_host_t vm)
   /* Don't free these things twice: they are the ones of my physical host */
   vm->pimpl_cpu = nullptr;
   vm->pimpl_netcard = nullptr;
+
+  vm->destroy();
 }