Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[cpu_ti] small code untangling
[simgrid.git] / src / surf / cpu_ti.cpp
index 564cd84..c50f2f8 100644 (file)
@@ -5,8 +5,8 @@
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
 #include "cpu_ti.hpp"
-#include "trace_mgr_private.h"
 #include "xbt/heap.h"
+#include "src/surf/trace_mgr.hpp"
 #include "src/surf/platform.hpp"
 
 #ifndef SURF_MODEL_CPUTI_H_
@@ -385,15 +385,6 @@ int CpuTiTrace::binarySearch(double *array, double a, int low, int high)
 }
 }
 
-/*************
- * CallBacks *
- *************/
-
-static void cpu_ti_define_callbacks()
-{
-  simgrid::surf::on_postparse.connect(simgrid::surf::cpu_add_traces);
-}
-
 /*********
  * Model *
  *********/
@@ -404,13 +395,14 @@ void surf_cpu_model_init_ti()
   xbt_assert(!surf_cpu_model_vm,"CPU model already initialized. This should not happen.");
 
   surf_cpu_model_pm = new simgrid::surf::CpuTiModel();
+  xbt_dynar_push(all_existing_models, &surf_cpu_model_pm);
+
   surf_cpu_model_vm = new simgrid::surf::CpuTiModel();
+  xbt_dynar_push(all_existing_models, &surf_cpu_model_vm);
 
-  cpu_ti_define_callbacks();
-  simgrid::surf::Model *model_pm = static_cast<simgrid::surf::Model*>(surf_cpu_model_pm);
-  simgrid::surf::Model *model_vm = static_cast<simgrid::surf::Model*>(surf_cpu_model_vm);
-  xbt_dynar_push(all_existing_models, &model_pm);
-  xbt_dynar_push(all_existing_models, &model_vm);
+  simgrid::surf::on_postparse.connect([]() {
+    surf_cpu_model_pm->addTraces();
+  });
 }
 
 namespace simgrid {
@@ -513,7 +505,7 @@ void CpuTiModel::addTraces()
       continue;
     }
     XBT_DEBUG("Add state trace: %s to CPU(%s)", trace_name, elm);
-    cpu->p_stateEvent = tmgr_history_add_trace(history, trace, 0.0, 0, cpu);
+    cpu->p_stateEvent = future_evt_set->add_trace(trace, 0.0, cpu);
   }
 
   xbt_dict_foreach(trace_connect_list_power, cursor, trace_name, elm) {
@@ -535,11 +527,8 @@ void CpuTiModel::addTraces()
       xbt_dynar_get_cpy(trace->s_list.event_list,
                         xbt_dynar_length(trace->s_list.event_list) - 1, &val);
       if (val.delta == 0) {
-        tmgr_trace_t empty_trace;
-        empty_trace = tmgr_empty_trace_new();
         cpu->p_speedEvent =
-            tmgr_history_add_trace(history, empty_trace,
-                                   cpu->p_availTrace->m_lastTime, 0, cpu);
+            future_evt_set->add_trace(tmgr_empty_trace_new(), cpu->p_availTrace->m_lastTime, cpu);
       }
     }
   }
@@ -565,7 +554,7 @@ CpuTi::CpuTi(CpuTiModel *model, simgrid::s4u::Host *host, xbt_dynar_t speedPeak,
   XBT_DEBUG("CPU create: peak=%f", m_speedPeak);
 
   if (stateTrace)
-    p_stateEvent = tmgr_history_add_trace(history, stateTrace, 0.0, 0, this);
+    p_stateEvent = future_evt_set->add_trace(stateTrace, 0.0, this);
 
   if (speedTrace && xbt_dynar_length(speedTrace->s_list.event_list) > 1) {
        s_tmgr_event_t val;
@@ -573,8 +562,8 @@ CpuTi::CpuTi(CpuTiModel *model, simgrid::s4u::Host *host, xbt_dynar_t speedPeak,
     xbt_dynar_get_cpy(speedTrace->s_list.event_list,
                       xbt_dynar_length(speedTrace->s_list.event_list) - 1, &val);
     if (val.delta == 0) {
-      tmgr_trace_t empty_trace = tmgr_empty_trace_new();
-      p_speedEvent = tmgr_history_add_trace(history, empty_trace, p_availTrace->m_lastTime, 0, this);
+      p_speedEvent =
+          future_evt_set->add_trace(tmgr_empty_trace_new(), p_availTrace->m_lastTime, this);
     }
   }
 }
@@ -586,7 +575,7 @@ CpuTi::~CpuTi()
   delete p_actionSet;
 }
 
-void CpuTi::updateState(tmgr_trace_event_t event_type,
+void CpuTi::updateState(tmgr_trace_iterator_t event_type,
                         double value, double date)
 {
   CpuTiAction *action;
@@ -615,8 +604,7 @@ void CpuTi::updateState(tmgr_trace_event_t event_type,
 
     p_availTrace = trace;
 
-    if (tmgr_trace_event_free(event_type))
-      p_speedEvent = NULL;
+    tmgr_trace_event_unref(&p_speedEvent);
 
   } else if (event_type == p_stateEvent) {
     if (value > 0) {
@@ -644,14 +632,10 @@ void CpuTi::updateState(tmgr_trace_event_t event_type,
         }
       }
     }
-    if (tmgr_trace_event_free(event_type))
-      p_stateEvent = NULL;
+    tmgr_trace_event_unref(&p_stateEvent);
   } else {
-    XBT_CRITICAL("Unknown event ! \n");
-    xbt_abort();
+    xbt_die("Unknown event!\n");
   }
-
-  return;
 }
 
 void CpuTi::updateActionsFinishTime(double now)
@@ -792,7 +776,7 @@ void CpuTi::updateRemainingAmount(double now)
   m_lastUpdate = now;
 }
 
-CpuAction *CpuTi::execute(double size)
+CpuAction *CpuTi::execution_start(double size)
 {
   XBT_IN("(%s,%g)", getName(), size);
   CpuTiAction *action = new CpuTiAction(static_cast<CpuTiModel*>(getModel()), size, isOff(), this);