*/
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 */
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_;
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;
};
*/
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;