Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
don't store the VM implem where the host stores its implem
authorMartin Quinson <martin.quinson@loria.fr>
Thu, 17 Nov 2016 09:34:54 +0000 (10:34 +0100)
committerMartin Quinson <martin.quinson@loria.fr>
Thu, 17 Nov 2016 09:34:54 +0000 (10:34 +0100)
include/simgrid/s4u/VirtualMachine.hpp
src/msg/msg_vm.cpp
src/plugins/vm/s4u_VirtualMachine.cpp
src/surf/surf_c_bindings.cpp

index 7c83f8c..d914d8e 100644 (file)
@@ -21,6 +21,9 @@ typedef enum {
 } e_surf_vm_state_t;
 
 namespace simgrid {
+namespace surf {
+class VirtualMachineImpl;
+};
 namespace s4u {
 
 /** @ingroup s4u_api
@@ -49,6 +52,9 @@ public:
 
   void parameters(vm_params_t params);
   void setParameters(vm_params_t params);
+
+  /* FIXME: protect me */
+  simgrid::surf::VirtualMachineImpl* pimpl_vm_ = nullptr;
 };
 }
 } // namespace simgrid::s4u
index 714b70f..0d5304b 100644 (file)
@@ -346,7 +346,7 @@ static int migration_rx_fun(int argc, char *argv[])
 
   {
    // Now the VM is running on the new host (the migration is completed) (even if the SRC crash)
-   static_cast<simgrid::surf::VirtualMachineImpl*>(vm->pimpl_)->isMigrating = false;
+   vm->pimpl_vm_->isMigrating = false;
    XBT_DEBUG("VM(%s) moved from PM(%s) to PM(%s)", sg_host_get_name(ms->vm), sg_host_get_name(ms->src_pm),
              sg_host_get_name(ms->dst_pm));
    TRACE_msg_vm_change_host(ms->vm, ms->src_pm, ms->dst_pm);
@@ -395,16 +395,14 @@ static void reset_dirty_pages(msg_vm_t vm)
 
 static void start_dirty_page_tracking(msg_vm_t vm)
 {
-  simgrid::surf::VirtualMachineImpl* pimpl = static_cast<simgrid::surf::VirtualMachineImpl*>(vm->pimpl_);
-  pimpl->dp_enabled                        = 1;
+  static_cast<simgrid::s4u::VirtualMachine*>(vm)->pimpl_vm_->dp_enabled = 1;
 
   reset_dirty_pages(vm);
 }
 
 static void stop_dirty_page_tracking(msg_vm_t vm)
 {
-  simgrid::surf::VirtualMachineImpl* pimpl = static_cast<simgrid::surf::VirtualMachineImpl*>(vm->pimpl_);
-  pimpl->dp_enabled                        = 0;
+  static_cast<simgrid::s4u::VirtualMachine*>(vm)->pimpl_vm_->dp_enabled = 0;
 }
 
 static double get_computed(char *key, msg_vm_t vm, dirty_page_t dp, double remaining, double clock)
@@ -420,7 +418,7 @@ static double get_computed(char *key, msg_vm_t vm, dirty_page_t dp, double remai
 
 static double lookup_computed_flop_counts(msg_vm_t vm, int stage_for_fancy_debug, int stage2_round_for_fancy_debug)
 {
-  simgrid::surf::VirtualMachineImpl* pimpl = static_cast<simgrid::surf::VirtualMachineImpl*>(vm->pimpl_);
+  simgrid::surf::VirtualMachineImpl* pimpl = static_cast<simgrid::s4u::VirtualMachine*>(vm)->pimpl_vm_;
   double total = 0;
 
   char *key = nullptr;
index 1ea75da..32df015 100644 (file)
@@ -16,7 +16,7 @@ namespace s4u {
 
 VirtualMachine::VirtualMachine(const char* name, s4u::Host* Pm) : Host(name)
 {
-  pimpl_ = new surf::VirtualMachineImpl(this, Pm);
+  pimpl_vm_ = new surf::VirtualMachineImpl(this, Pm);
 }
 
 VirtualMachine::~VirtualMachine()
index 2a2ace9..7ddcf93 100644 (file)
@@ -19,7 +19,7 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(surf_kernel);
 
 static simgrid::surf::VirtualMachineImpl* get_casted_vm(sg_host_t host)
 {
-  return static_cast<simgrid::surf::VirtualMachineImpl*>(host->pimpl_);
+  return static_cast<simgrid::s4u::VirtualMachine*>(host)->pimpl_vm_;
 }
 
 extern double NOW;