Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
plug a leak when ptask_LO7 is used
[simgrid.git] / src / surf / host_ptask_L07.cpp
index cd1c12a..e4156e5 100644 (file)
 #include "cpu_interface.hpp"
 #include "surf_routing.hpp"
 #include "xbt/lib.h"
+#include "src/surf/platform.hpp"
 
 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(surf_host);
+XBT_LOG_EXTERNAL_CATEGORY(xbt_cfg);
 
 /**************************************/
 /*** Resource Creation & Destruction **/
@@ -28,13 +30,15 @@ static void ptask_netlink_parse_init(sg_platf_link_cbarg_t link)
 
 void surf_host_model_init_ptask_L07(void)
 {
-  XBT_INFO("Switching to the L07 model to handle parallel tasks.");
+  XBT_CINFO(xbt_cfg,"Switching to the L07 model to handle parallel tasks.");
   xbt_assert(!surf_cpu_model_pm, "CPU model type already defined");
   xbt_assert(!surf_network_model, "network model type already defined");
 
   // Define the callbacks to parse the XML
-  sg_platf_link_add_cb(ptask_netlink_parse_init);
-  sg_platf_postparse_add_cb(host_add_traces);
+  simgrid::surf::on_link.connect(ptask_netlink_parse_init);
+  simgrid::surf::on_postparse.connect([](){
+      surf_host_model->addTraces();
+  });
 
   surf_host_model = new simgrid::surf::HostL07Model();
   xbt_dynar_push(all_existing_models, &surf_host_model);
@@ -69,7 +73,8 @@ CpuL07Model::CpuL07Model(HostL07Model *hmodel,lmm_system_t sys)
        }
 CpuL07Model::~CpuL07Model() {
        surf_cpu_model_pm = NULL;
-       p_maxminSystem = NULL; // Avoid multi-free
+       lmm_system_free(p_maxminSystem);
+       p_maxminSystem = NULL;
 }
 NetworkL07Model::NetworkL07Model(HostL07Model *hmodel, lmm_system_t sys)
        : NetworkModel()
@@ -201,7 +206,7 @@ L07Action::L07Action(Model *model, int host_nb,
 
   this->p_netcardList->reserve(host_nb);
   for (int i = 0; i<host_nb; i++)
-         this->p_netcardList->push_back(host_list[i]->p_netcard);
+         this->p_netcardList->push_back(host_list[i]->pimpl_netcard);
 
   /* Compute the number of affected resources... */
   for (int i = 0; i < host_nb; i++) {
@@ -249,7 +254,7 @@ L07Action::L07Action(Model *model, int host_nb,
 
   for (int i = 0; i < host_nb; i++)
     lmm_expand(model->getMaxminSystem(),
-              host_list[i]->p_cpu->getConstraint(),
+              host_list[i]->pimpl_cpu->getConstraint(),
                this->getVariable(), flops_amount[i]);
 
   for (int i = 0; i < host_nb; i++) {
@@ -297,7 +302,7 @@ Action *NetworkL07Model::communicate(NetCard *src, NetCard *dst,
   return res;
 }
 
-Cpu *CpuL07Model::createCpu(simgrid::Host *host,  xbt_dynar_t powerPeakList,
+Cpu *CpuL07Model::createCpu(simgrid::s4u::Host *host,  xbt_dynar_t powerPeakList,
                           int pstate, double power_scale,
                           tmgr_trace_t power_trace, int core,
                           int initiallyOn,
@@ -341,7 +346,7 @@ void HostL07Model::addTraces()
   /* Connect traces relative to cpu */
   xbt_dict_foreach(trace_connect_list_host_avail, cursor, trace_name, elm) {
     tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
-    CpuL07 *host = static_cast<CpuL07*>(sg_host_by_name(elm)->p_cpu);
+    CpuL07 *host = static_cast<CpuL07*>(sg_host_by_name(elm)->pimpl_cpu);
 
     xbt_assert(host, "Host %s undefined", elm);
     xbt_assert(trace, "Trace %s undefined", trace_name);
@@ -351,7 +356,7 @@ void HostL07Model::addTraces()
 
   xbt_dict_foreach(trace_connect_list_power, cursor, trace_name, elm) {
     tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
-    CpuL07 *host = static_cast<CpuL07*>(sg_host_by_name(elm)->p_cpu);
+    CpuL07 *host = static_cast<CpuL07*>(sg_host_by_name(elm)->pimpl_cpu);
 
     xbt_assert(host, "Host %s undefined", elm);
     xbt_assert(trace, "Trace %s undefined", trace_name);
@@ -395,7 +400,7 @@ void HostL07Model::addTraces()
  * Resource *
  ************/
 
-CpuL07::CpuL07(CpuL07Model *model, simgrid::Host *host,
+CpuL07::CpuL07(CpuL07Model *model, simgrid::s4u::Host *host,
                     xbt_dynar_t speedPeakList, int pstate,
                                 double speedScale, tmgr_trace_t speedTrace,
                         int core, int initiallyOn, tmgr_trace_t state_trace)
@@ -500,7 +505,7 @@ bool LinkL07::isUsed(){
   return lmm_constraint_used(getModel()->getMaxminSystem(), getConstraint());
 }
 
-void CpuL07::updateState(tmgr_trace_event_t event_type, double value, double /*date*/){
+void CpuL07::updateState(tmgr_trace_iterator_t event_type, double value, double /*date*/){
   XBT_DEBUG("Updating cpu %s (%p) with value %g", getName(), this, value);
   if (event_type == p_speedEvent) {
        m_speedScale = value;
@@ -521,7 +526,7 @@ void CpuL07::updateState(tmgr_trace_event_t event_type, double value, double /*d
   return;
 }
 
-void LinkL07::updateState(tmgr_trace_event_t event_type, double value, double date) {
+void LinkL07::updateState(tmgr_trace_iterator_t event_type, double value, double date) {
   XBT_DEBUG("Updating link %s (%p) with value=%f for date=%g", getName(), this, value, date);
   if (event_type == p_bwEvent) {
     updateBandwidth(value, date);