// It corresponds to the cost of a VM running no tasks.
namespace simgrid {
-namespace surf {
+namespace vm {
/***********
* Classes *
/** @ingroup SURF_callbacks
* @brief Callbacks fired after VM creation. Signature: `void(VirtualMachine*)`
*/
-extern XBT_PRIVATE simgrid::xbt::signal<void(simgrid::surf::VirtualMachineImpl*)> onVmCreation;
+extern XBT_PRIVATE simgrid::xbt::signal<void(simgrid::vm::VirtualMachineImpl*)> onVmCreation;
/** @ingroup SURF_callbacks
* @brief Callbacks fired after VM destruction. Signature: `void(VirtualMachine*)`
*/
-extern XBT_PRIVATE simgrid::xbt::signal<void(simgrid::surf::VirtualMachineImpl*)> onVmDestruction;
+extern XBT_PRIVATE simgrid::xbt::signal<void(simgrid::vm::VirtualMachineImpl*)> onVmDestruction;
/** @ingroup SURF_callbacks
* @brief Callbacks after VM State changes. Signature: `void(VirtualMachine*)`
*/
-extern XBT_PRIVATE simgrid::xbt::signal<void(simgrid::surf::VirtualMachineImpl*)> onVmStateChange;
+extern XBT_PRIVATE simgrid::xbt::signal<void(simgrid::vm::VirtualMachineImpl*)> onVmStateChange;
/************
* Resource *
* @brief SURF VM interface class
* @details A VM represent a virtual machine
*/
-class VirtualMachineImpl : public HostImpl {
+class VirtualMachineImpl : public surf::HostImpl {
+ friend simgrid::s4u::VirtualMachine;
+
public:
- explicit VirtualMachineImpl(s4u::Host* piface, s4u::Host* host);
+ explicit VirtualMachineImpl(s4u::VirtualMachine* piface, s4u::Host* host);
~VirtualMachineImpl();
/** @brief Suspend the VM */
/** @brief Get the physical machine hosting the VM */
s4u::Host* getPm();
+ sg_size_t getRamsize();
+
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;
+ surf::Action* action_ = nullptr;
/* Dirty pages stuff */
int dp_enabled = 0;
public:
e_surf_vm_state_t getState();
void setState(e_surf_vm_state_t state);
- static std::deque<VirtualMachineImpl*> allVms_;
+ static std::deque<s4u::VirtualMachine*> allVms_;
bool isMigrating = false;
* @brief SURF VM model interface class
* @details A model is an object which handle the interactions between its Resources and its Actions
*/
-class VMModel : public HostModel {
+class VMModel : public surf::HostModel {
public:
void adjustWeightOfDummyCpuActions() override{};
}
}
+XBT_PUBLIC_DATA(simgrid::vm::VMModel*) surf_vm_model;
+
#endif /* VM_INTERFACE_HPP_ */