Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of scm.gforge.inria.fr:/gitroot/simgrid/simgrid
[simgrid.git] / src / surf / cpu_cas01.cpp
index 69a16b3..1dfe275 100644 (file)
@@ -6,8 +6,9 @@
 
 #include "cpu_cas01.hpp"
 #include "cpu_ti.hpp"
-#include "maxmin_private.hpp"
 #include "simgrid/sg_config.h"
+#include "src/kernel/lmm/maxmin.hpp"
+#include "xbt/utility.hpp"
 #include <algorithm>
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_cpu_cas, surf_cpu, "Logging specific to the SURF CPU IMPROVED module");
@@ -52,8 +53,7 @@ CpuCas01Model::CpuCas01Model() : simgrid::surf::CpuModel()
     xbt_die("Unsupported optimization (%s) for this model", optim.c_str());
   }
 
-  p_cpuRunningActionSetThatDoesNotNeedBeingChecked = new ActionList();
-  maxminSystem_                                    = new s_lmm_system_t(selectiveUpdate_);
+  maxminSystem_ = new simgrid::kernel::lmm::s_lmm_system_t(selectiveUpdate_);
 
   if (getUpdateMechanism() == UM_LAZY) {
     modifiedSet_ = new ActionLmmList();
@@ -68,8 +68,6 @@ CpuCas01Model::~CpuCas01Model()
   delete modifiedSet_;
 
   surf_cpu_model_pm = nullptr;
-
-  delete p_cpuRunningActionSetThatDoesNotNeedBeingChecked;
 }
 
 Cpu *CpuCas01Model::createCpu(simgrid::s4u::Host *host, std::vector<double> *speedPerPstate, int core)
@@ -104,11 +102,11 @@ bool CpuCas01::isUsed()
 /** @brief take into account changes of speed (either load or max) */
 void CpuCas01::onSpeedChange() {
   lmm_variable_t var = nullptr;
-  lmm_element_t elem = nullptr;
+  const_lmm_element_t elem = nullptr;
 
   model()->getMaxminSystem()->update_constraint_bound(constraint(), coresAmount_ * speed_.scale * speed_.peak);
   while ((var = constraint()->get_variable(&elem))) {
-    CpuCas01Action* action = static_cast<CpuCas01Action*>(lmm_variable_id(var));
+    CpuCas01Action* action = static_cast<CpuCas01Action*>(var->get_id());
 
     model()->getMaxminSystem()->update_variable_bound(action->getVariable(),
                                                       action->requestedCore() * speed_.scale * speed_.peak);
@@ -138,13 +136,13 @@ void CpuCas01::apply_event(tmgr_trace_event_t event, double value)
     } else {
       lmm_constraint_t cnst = constraint();
       lmm_variable_t var = nullptr;
-      lmm_element_t elem = nullptr;
+      const_lmm_element_t elem = nullptr;
       double date = surf_get_clock();
 
       turnOff();
 
       while ((var = cnst->get_variable(&elem))) {
-        Action *action = static_cast<Action*>(lmm_variable_id(var));
+        Action* action = static_cast<Action*>(var->get_id());
 
         if (action->getState() == Action::State::running ||
             action->getState() == Action::State::ready ||
@@ -184,8 +182,8 @@ CpuAction *CpuCas01::sleep(double duration)
   action->suspended_ = 2;
   if (duration < 0) { // NO_MAX_DURATION
     /* Move to the *end* of the corresponding action set. This convention is used to speed up update_resource_state */
-    action->getStateSet()->erase(action->getStateSet()->iterator_to(*action));
-    action->stateSet_ = static_cast<CpuCas01Model*>(model())->p_cpuRunningActionSetThatDoesNotNeedBeingChecked;
+    simgrid::xbt::intrusive_erase(*action->getStateSet(), *action);
+    action->stateSet_ = &static_cast<CpuCas01Model*>(model())->p_cpuRunningActionSetThatDoesNotNeedBeingChecked;
     action->getStateSet()->push_back(*action);
   }