Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Move some content out of HostImpl (into VirtualMachineImpl)
[simgrid.git] / src / surf / VirtualMachineImpl.cpp
index be31926..fbf47e5 100644 (file)
@@ -40,11 +40,6 @@ simgrid::xbt::signal<void(simgrid::surf::VirtualMachineImpl*)> onVmStateChange;
 
 std::deque<VirtualMachineImpl*> VirtualMachineImpl::allVms_;
 
-s4u::Host* VMModel::createVM(const char* name, sg_host_t host_PM)
-{
-  return new s4u::VirtualMachine(name, host_PM);
-}
-
 /* In the real world, processes on the guest operating system will be somewhat degraded due to virtualization overhead.
  * The total CPU share these processes get is smaller than that of the VM process gets on a host operating system. */
 // const double virt_overhead = 0.95;
@@ -129,6 +124,9 @@ VirtualMachineImpl::VirtualMachineImpl(simgrid::s4u::Host* piface, simgrid::s4u:
   /* FIXME: TODO: we have to periodically input GUESTOS_NOISE to the system? how ? */
   action_ = sub_cpu->execution_start(0);
 
+  /* Initialize the VM parameters */
+  params_.ramsize = 0;
+
   XBT_VERB("Create VM(%s)@PM(%s) with %ld mounted disks", piface->name().c_str(), hostPM_->name().c_str(),
            xbt_dynar_length(storage_));
 }
@@ -144,6 +142,8 @@ VirtualMachineImpl::~VirtualMachineImpl()
   /* Free the cpu_action of the VM. */
   XBT_ATTRIB_UNUSED int ret = action_->unref();
   xbt_assert(ret == 1, "Bug: some resource still remains");
+
+  delete piface_->pimpl_cpu;
 }
 
 e_surf_vm_state_t VirtualMachineImpl::getState()
@@ -182,13 +182,13 @@ void VirtualMachineImpl::restore()
 }
 
 /** @brief returns the physical machine on which the VM is running **/
-sg_host_t VirtualMachineImpl::getPm()
+s4u::Host* VirtualMachineImpl::getPm()
 {
   return hostPM_;
 }
 
 /* Update the physical host of the given VM */
-void VirtualMachineImpl::migrate(sg_host_t host_dest)
+void VirtualMachineImpl::migrate(s4u::Host* host_dest)
 {
   const char* vm_name     = piface_->name().c_str();
   const char* pm_name_src = hostPM_->name().c_str();
@@ -228,5 +228,16 @@ void VirtualMachineImpl::setBound(double bound)
 {
   action_->setBound(bound);
 }
+
+void VirtualMachineImpl::getParams(vm_params_t params)
+{
+  *params = params_;
+}
+
+void VirtualMachineImpl::setParams(vm_params_t params)
+{
+  /* may check something here. */
+  params_ = *params;
+}
 }
 }