Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
move the VM-related data out of MSG's private data for hosts
[simgrid.git] / src / surf / VirtualMachineImpl.hpp
index aa216e7..53f948d 100644 (file)
@@ -56,7 +56,7 @@ extern XBT_PRIVATE simgrid::xbt::signal<void(simgrid::surf::VirtualMachineImpl*)
  */
 class VirtualMachineImpl : public HostImpl {
 public:
-  VirtualMachineImpl(const char* name, simgrid::s4u::Host* host);
+  explicit VirtualMachineImpl(s4u::Host* piface, s4u::Host* host);
   ~VirtualMachineImpl();
 
   /** @brief Suspend the VM */
@@ -72,16 +72,24 @@ public:
   virtual void restore();
 
   /** @brief Migrate the VM to the destination host */
-  virtual void migrate(sg_host_t dest_PM);
+  virtual void migrate(s4u::Host* dest);
 
   /** @brief Get the physical machine hosting the VM */
-  sg_host_t getPm();
+  s4u::Host* getPm();
 
   virtual void setBound(double bound);
 
+  void getParams(vm_params_t params);
+  void setParams(vm_params_t params);
+
   /* The vm object of the lower layer */
   CpuAction* action_ = nullptr;
 
+  /* Dirty pages stuff */
+  int dp_enabled                     = 0;
+  xbt_dict_t dp_objs                 = nullptr;
+  double dp_updated_by_deleted_tasks = 0;
+
 protected:
   simgrid::s4u::Host* hostPM_;
 
@@ -90,6 +98,11 @@ public:
   void setState(e_surf_vm_state_t state);
   static std::deque<VirtualMachineImpl*> allVms_;
 
+  bool isMigrating = false;
+
+private:
+  s_vm_params_t params_;
+
 protected:
   e_surf_vm_state_t vmState_ = SURF_VM_STATE_CREATED;
 };
@@ -103,13 +116,6 @@ protected:
  */
 class VMModel : public HostModel {
 public:
-  /**
-   * @brief Create a new VM
-   *
-   * @param name The name of the new VM
-   * @param host_PM The real machine hosting the VM
-   */
-  s4u::Host* createVM(const char* name, sg_host_t host_PM);
   void adjustWeightOfDummyCpuActions() override{};
 
   double nextOccuringEvent(double now) override;