Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Restructure surf++ cpu and network
authorPaul Bédaride <paul.bedaride@gmail.com>
Fri, 29 Nov 2013 16:57:31 +0000 (17:57 +0100)
committerPaul Bédaride <paul.bedaride@gmail.com>
Fri, 29 Nov 2013 16:58:24 +0000 (17:58 +0100)
27 files changed:
buildtools/Cmake/DefinePackages.cmake
src/include/surf/surf.h
src/surf/cpu_cas01.hpp
src/surf/cpu_interface.cpp [moved from src/surf/cpu.cpp with 99% similarity]
src/surf/cpu_interface.hpp [moved from src/surf/cpu.hpp with 100% similarity]
src/surf/cpu_ti.cpp
src/surf/cpu_ti.hpp
src/surf/network.c [deleted file]
src/surf/network.hpp [deleted file]
src/surf/network_cm02.cpp [moved from src/surf/network.cpp with 95% similarity]
src/surf/network_cm02.hpp [new file with mode: 0644]
src/surf/network_constant.hpp
src/surf/network_smpi.hpp
src/surf/surf.cpp
src/surf/surf.hpp
src/surf/surf_c_bindings.cpp [moved from src/surf/surf_interface.cpp with 98% similarity]
src/surf/surf_routing_cluster.cpp
src/surf/surf_routing_cluster.hpp
src/surf/surf_routing_dijkstra.cpp
src/surf/surf_routing_floyd.cpp
src/surf/surf_routing_full.cpp
src/surf/surf_routing_generic.cpp
src/surf/surf_routing_vivaldi.cpp
src/surf/surf_routing_vivaldi.hpp
src/surf/workstation.hpp
src/surf/workstation_ptask_L07.cpp
src/surf/workstation_ptask_L07.hpp

index 1ba8ed9..471a5ad 100644 (file)
@@ -40,16 +40,17 @@ set(EXTRA_DIST
   src/smpi/colls/coll_tuned_topo.h
   src/smpi/private.h
   src/smpi/smpi_mpi_dt_private.h
-  src/surf/cpu.hpp
+  src/surf/cpu_interface.hpp
   src/surf/cpu_ti.hpp
   src/surf/cpu_cas01.hpp
   src/surf/gtnets/gtnets_interface.h
   src/surf/gtnets/gtnets_simulator.h
   src/surf/gtnets/gtnets_topology.h
   src/surf/maxmin_private.h
+  src/surf/network_interface.hpp
   src/surf/network_gtnets.hpp
   src/surf/network_ns3_private.h
-  src/surf/network.hpp
+  src/surf/network_cm02.hpp
   src/surf/network_smpi.hpp
   src/surf/network_constant.hpp
   src/surf/ns3/my-point-to-point-helper.h
@@ -295,7 +296,7 @@ set(NS3_SRC
   )
 
 set(SURF_SRC
-  src/surf/cpu.cpp
+  src/surf/cpu_interface.cpp
   src/surf/cpu_ti.cpp
   src/surf/cpu_cas01.cpp
   src/surf/fair_bottleneck.c
@@ -303,7 +304,8 @@ set(SURF_SRC
   src/surf/instr_surf.c
   src/surf/lagrange.c
   src/surf/maxmin.c
-  src/surf/network.cpp
+  src/surf/network_interface.cpp
+  src/surf/network_cm02.cpp
   src/surf/network_smpi.cpp  
   src/surf/network_constant.cpp
   src/surf/platf_generator.c
@@ -311,7 +313,7 @@ set(SURF_SRC
   src/surf/sg_platf.c
   src/surf/storage.cpp
   src/surf/surf.cpp
-  src/surf/surf_interface.cpp
+  src/surf/surf_c_bindings.cpp
   src/surf/surf_routing.cpp  
   src/surf/surf_routing_cluster.cpp
   src/surf/surf_routing_dijkstra.cpp
index c9b5fd6..11f2472 100644 (file)
@@ -48,7 +48,7 @@ class Model;
 class CpuModel;
 class WorkstationModel;
 class WorkstationVMModel;
-class NetworkCm02Model;
+class NetworkModel;
 class StorageModel;
 class Resource;
 class ResourceLmm;
@@ -66,7 +66,7 @@ typedef struct Model Model;
 typedef struct CpuModel CpuModel;
 typedef struct WorkstationModel WorkstationModel;
 typedef struct WorkstationVMModel WorkstationVMModel;
-typedef struct NetworkCm02Model NetworkCm02Model;
+typedef struct NetworkModel NetworkModel;
 typedef struct StorageModel StorageModel;
 typedef struct Resource Resource;
 typedef struct ResourceLmm ResourceLmm;
@@ -92,7 +92,7 @@ typedef CpuModel *surf_cpu_model_t;
 typedef WorkstationModel *surf_workstation_model_t;
 typedef WorkstationVMModel *surf_vm_workstation_model_t;
 
-typedef NetworkCm02Model *surf_network_model_t;
+typedef NetworkModel *surf_network_model_t;
 typedef StorageModel *surf_storage_model_t;
 
 typedef xbt_dictelm_t surf_resource_t;
index 8ed959f..5f52ef5 100644 (file)
@@ -1,4 +1,4 @@
-#include "cpu.hpp"
+#include "cpu_interface.hpp"
 
 /***********
  * Classes *
similarity index 99%
rename from src/surf/cpu.cpp
rename to src/surf/cpu_interface.cpp
index 0c9a2f3..c80c77a 100644 (file)
@@ -1,4 +1,4 @@
-#include "cpu.hpp"
+#include "cpu_interface.hpp"
 
 extern "C" {
 XBT_LOG_EXTERNAL_CATEGORY(surf_kernel);
similarity index 100%
rename from src/surf/cpu.hpp
rename to src/surf/cpu_interface.hpp
index 8cf2280..568dd75 100644 (file)
@@ -426,10 +426,6 @@ CpuTiModel::CpuTiModel() : CpuModel("cpu_ti")
 
 CpuTiModel::~CpuTiModel()
 {
-  void **cpu;
-  xbt_lib_cursor_t cursor;
-  char *key;
-
   surf_cpu_model_pm = NULL;
 
   xbt_swag_free(p_runningActionSetThatDoesNotNeedBeingChecked);
index edf240e..9a14110 100644 (file)
@@ -1,4 +1,4 @@
-#include "cpu.hpp"
+#include "cpu_interface.hpp"
 #include "trace_mgr_private.h"
 #include "surf/surf_routing.h"
 
diff --git a/src/surf/network.c b/src/surf/network.c
deleted file mode 100644 (file)
index c959b37..0000000
+++ /dev/null
@@ -1,992 +0,0 @@
-
-/*
- * Network with improved management of tasks, IM (Improved Management).
- * Uses a heap to store actions so that the share_resources is faster.
- * This model automatically sets the selective update flag to 1 and is
- * highly dependent on the maxmin lmm module.
- */
-
-/* Copyright (c) 2004-2013. The SimGrid Team.
- * All rights reserved.                                                     */
-
-/* This program is free software; you can redistribute it and/or modify it
- * under the terms of the license (GNU LGPL) which comes with this package. */
-
-#include "network_private.h"
-#include "xbt/log.h"
-#include "xbt/str.h"
-
-#include "surf_private.h"
-#include "xbt/dict.h"
-#include "maxmin_private.h"
-#include "surf/surfxml_parse_values.h"
-#include "surf/surf_resource.h"
-#include "surf/surf_resource_lmm.h"
-#include "simgrid/sg_config.h"
-
-#undef GENERIC_LMM_ACTION
-#undef GENERIC_ACTION
-#define GENERIC_LMM_ACTION(action) (action)->generic_lmm_action
-#define GENERIC_ACTION(action) GENERIC_LMM_ACTION(action).generic_action
-
-
-XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_network, surf,
-                                "Logging specific to the SURF network module");
-
-surf_model_t surf_network_model = NULL;
-static void (*network_solve) (lmm_system_t) = NULL;
-
-xbt_dynar_t smpi_bw_factor = NULL;
-xbt_dynar_t smpi_lat_factor = NULL;
-
-typedef struct s_smpi_factor *smpi_factor_t;
-typedef struct s_smpi_factor {
-  long factor;
-  double value;
-} s_smpi_factor_t;
-
-
-double sg_sender_gap = 0.0;
-double sg_latency_factor = 1.0; /* default value; can be set by model or from command line */
-double sg_bandwidth_factor = 1.0;       /* default value; can be set by model or from command line */
-double sg_weight_S_parameter = 0.0;     /* default value; can be set by model or from command line */
-
-double sg_tcp_gamma = 0.0;
-int sg_network_crosstraffic = 0;
-
-xbt_dict_t gap_lookup = NULL;
-
-/******************************************************************************/
-/*                           Factors callbacks                                */
-/******************************************************************************/
-static double constant_latency_factor(double size)
-{
-  return sg_latency_factor;
-}
-
-static double constant_bandwidth_factor(double size)
-{
-  return sg_bandwidth_factor;
-}
-
-static double constant_bandwidth_constraint(double rate, double bound,
-                                            double size)
-{
-  return rate;
-}
-
-/**********************/
-/*   SMPI callbacks   */
-/**********************/
-
-static int factor_cmp(const void *pa, const void *pb)
-{
-  return (((s_smpi_factor_t*)pa)->factor > ((s_smpi_factor_t*)pb)->factor) ? 1 : 
-         (((s_smpi_factor_t*)pa)->factor < ((s_smpi_factor_t*)pb)->factor) ? -1 : 0;
-}
-
-
-static xbt_dynar_t parse_factor(const char *smpi_coef_string)
-{
-  char *value = NULL;
-  unsigned int iter = 0;
-  s_smpi_factor_t fact;
-  xbt_dynar_t smpi_factor, radical_elements, radical_elements2 = NULL;
-
-  smpi_factor = xbt_dynar_new(sizeof(s_smpi_factor_t), NULL);
-  radical_elements = xbt_str_split(smpi_coef_string, ";");
-  xbt_dynar_foreach(radical_elements, iter, value) {
-
-    radical_elements2 = xbt_str_split(value, ":");
-    if (xbt_dynar_length(radical_elements2) != 2)
-      xbt_die("Malformed radical for smpi factor!");
-    fact.factor = atol(xbt_dynar_get_as(radical_elements2, 0, char *));
-    fact.value = atof(xbt_dynar_get_as(radical_elements2, 1, char *));
-    xbt_dynar_push_as(smpi_factor, s_smpi_factor_t, fact);
-    XBT_DEBUG("smpi_factor:\t%ld : %f", fact.factor, fact.value);
-    xbt_dynar_free(&radical_elements2);
-  }
-  xbt_dynar_free(&radical_elements);
-  iter=0;
-  xbt_dynar_sort(smpi_factor, &factor_cmp);
-  xbt_dynar_foreach(smpi_factor, iter, fact) {
-    XBT_DEBUG("ordered smpi_factor:\t%ld : %f", fact.factor, fact.value);
-
-  }
-  return smpi_factor;
-}
-
-static double smpi_bandwidth_factor(double size)
-{
-  if (!smpi_bw_factor)
-    smpi_bw_factor =
-        parse_factor(sg_cfg_get_string("smpi/bw_factor"));
-
-  unsigned int iter = 0;
-  s_smpi_factor_t fact;
-  double current=1.0;
-  xbt_dynar_foreach(smpi_bw_factor, iter, fact) {
-    if (size <= fact.factor) {
-      XBT_DEBUG("%f <= %ld return %f", size, fact.factor, current);
-      return current;
-    }else
-      current=fact.value;
-  }
-  XBT_DEBUG("%f > %ld return %f", size, fact.factor, current);
-
-  return current;
-}
-
-static double smpi_latency_factor(double size)
-{
-  if (!smpi_lat_factor)
-    smpi_lat_factor =
-        parse_factor(sg_cfg_get_string("smpi/lat_factor"));
-
-  unsigned int iter = 0;
-  s_smpi_factor_t fact;
-  double current=1.0;
-  xbt_dynar_foreach(smpi_lat_factor, iter, fact) {
-    if (size <= fact.factor) {
-      XBT_DEBUG("%f <= %ld return %f", size, fact.factor, current);
-      return current;
-    }else
-      current=fact.value;
-  }
-  XBT_DEBUG("%f > %ld return %f", size, fact.factor, current);
-
-  return current;
-}
-
-/**--------- <copy/paste C code snippet in surf/network.c> -----------*/
-
-static double smpi_bandwidth_constraint(double rate, double bound,
-                                        double size)
-{
-  return rate < 0 ? bound : min(bound, rate * smpi_bandwidth_factor(size));
-}
-
-static double (*latency_factor_callback) (double) =
-    &constant_latency_factor;
-static double (*bandwidth_factor_callback) (double) =
-    &constant_bandwidth_factor;
-static double (*bandwidth_constraint_callback) (double, double, double) =
-    &constant_bandwidth_constraint;
-
-static void (*gap_append) (double, const link_CM02_t,
-                           surf_action_network_CM02_t) = NULL;
-
-static void *net_create_resource(const char *name,
-                                 double bw_initial,
-                                 tmgr_trace_t bw_trace,
-                                 double lat_initial,
-                                 tmgr_trace_t lat_trace,
-                                 e_surf_resource_state_t
-                                 state_initial,
-                                 tmgr_trace_t state_trace,
-                                 e_surf_link_sharing_policy_t
-                                 policy, xbt_dict_t properties)
-{
-  link_CM02_t nw_link = (link_CM02_t)
-      surf_resource_lmm_new(sizeof(s_link_CM02_t),
-                            surf_network_model, name, properties,
-                            surf_network_model->model_private->maxmin_system,
-                            sg_bandwidth_factor * bw_initial,
-                            history,
-                            state_initial, state_trace,
-                            bw_initial, bw_trace);
-
-  xbt_assert(!xbt_lib_get_or_null(link_lib, name, SURF_LINK_LEVEL),
-             "Link '%s' declared several times in the platform file.",
-             name);
-
-  nw_link->lat_current = lat_initial;
-  if (lat_trace)
-    nw_link->lat_event =
-        tmgr_history_add_trace(history, lat_trace, 0.0, 0, nw_link);
-
-  if (policy == SURF_LINK_FATPIPE)
-    lmm_constraint_shared(nw_link->lmm_resource.constraint);
-
-  xbt_lib_set(link_lib, name, SURF_LINK_LEVEL, nw_link);
-  XBT_DEBUG("Create link '%s'",name);
-
-  return nw_link;
-}
-
-static void net_parse_link_init(sg_platf_link_cbarg_t link)
-{
-  if (link->policy == SURF_LINK_FULLDUPLEX) {
-    char *link_id;
-    link_id = bprintf("%s_UP", link->id);
-    net_create_resource(link_id,
-                        link->bandwidth,
-                        link->bandwidth_trace,
-                        link->latency,
-                        link->latency_trace,
-                        link->state,
-                        link->state_trace, link->policy, link->properties);
-    xbt_free(link_id);
-    link_id = bprintf("%s_DOWN", link->id);
-    net_create_resource(link_id,
-                        link->bandwidth,
-                        link->bandwidth_trace,
-                        link->latency,
-                        link->latency_trace,
-                        link->state,
-                        link->state_trace, link->policy, link->properties);
-    xbt_free(link_id);
-  } else {
-    net_create_resource(link->id,
-                        link->bandwidth,
-                        link->bandwidth_trace,
-                        link->latency,
-                        link->latency_trace,
-                        link->state,
-                        link->state_trace, link->policy, link->properties);
-  }
-}
-
-static void net_add_traces(void)
-{
-  xbt_dict_cursor_t cursor = NULL;
-  char *trace_name, *elm;
-
-  static int called = 0;
-  if (called)
-    return;
-  called = 1;
-
-  /* connect all traces relative to network */
-  xbt_dict_foreach(trace_connect_list_link_avail, cursor, trace_name, elm) {
-    tmgr_trace_t trace = xbt_dict_get_or_null(traces_set_list, trace_name);
-    link_CM02_t link = xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL);
-
-    xbt_assert(link, "Cannot connect trace %s to link %s: link undefined",
-               trace_name, elm);
-    xbt_assert(trace,
-               "Cannot connect trace %s to link %s: trace undefined",
-               trace_name, elm);
-
-    link->lmm_resource.state_event =
-        tmgr_history_add_trace(history, trace, 0.0, 0, link);
-  }
-
-  xbt_dict_foreach(trace_connect_list_bandwidth, cursor, trace_name, elm) {
-    tmgr_trace_t trace = xbt_dict_get_or_null(traces_set_list, trace_name);
-    link_CM02_t link = xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL);
-
-    xbt_assert(link, "Cannot connect trace %s to link %s: link undefined",
-               trace_name, elm);
-    xbt_assert(trace,
-               "Cannot connect trace %s to link %s: trace undefined",
-               trace_name, elm);
-
-    link->lmm_resource.power.event =
-        tmgr_history_add_trace(history, trace, 0.0, 0, link);
-  }
-
-  xbt_dict_foreach(trace_connect_list_latency, cursor, trace_name, elm) {
-    tmgr_trace_t trace = xbt_dict_get_or_null(traces_set_list, trace_name);
-    link_CM02_t link = xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL);
-
-    xbt_assert(link, "Cannot connect trace %s to link %s: link undefined",
-               trace_name, elm);
-    xbt_assert(trace,
-               "Cannot connect trace %s to link %s: trace undefined",
-               trace_name, elm);
-
-    link->lat_event = tmgr_history_add_trace(history, trace, 0.0, 0, link);
-  }
-}
-
-static void net_define_callbacks(void)
-{
-  /* Figuring out the network links */
-  sg_platf_link_add_cb(net_parse_link_init);
-  sg_platf_postparse_add_cb(net_add_traces);
-}
-
-static int net_resource_used(void *resource_id)
-{
-  return lmm_constraint_used(surf_network_model->model_private->maxmin_system, ((surf_resource_lmm_t)
-                                                     resource_id)->
-                             constraint);
-}
-
-void net_action_recycle(surf_action_t action)
-{
-  return;
-}
-
-#ifdef HAVE_LATENCY_BOUND_TRACKING
-int net_get_link_latency_limited(surf_action_t action)
-{
-  return action->latency_limited;
-}
-#endif
-
-static double net_share_resources_full(surf_model_t network_model, double now)
-{
-  s_surf_action_lmm_t s_action;
-  surf_action_network_CM02_t action = NULL;
-  xbt_swag_t running_actions =
-      network_model->states.running_action_set;
-  double min;
-
-  min = generic_maxmin_share_resources(running_actions,
-                                       xbt_swag_offset(s_action,
-                                                       variable),
-                                                       network_model->model_private->maxmin_system,
-                                       network_solve);
-
-#define VARIABLE(action) (*((lmm_variable_t*)(((char *) (action)) + xbt_swag_offset(s_action, variable)  )))
-
-  xbt_swag_foreach(action, running_actions) {
-#ifdef HAVE_LATENCY_BOUND_TRACKING
-    if (lmm_is_variable_limited_by_latency(GENERIC_LMM_ACTION(action).variable)) {
-      action->latency_limited = 1;
-    } else {
-      action->latency_limited = 0;
-    }
-#endif
-    if (action->latency > 0) {
-      min = (min < 0) ? action->latency : min(min, action->latency);
-    }
-  }
-
-  XBT_DEBUG("Min of share resources %f", min);
-
-  return min;
-}
-
-static double net_share_resources_lazy(surf_model_t network_model, double now)
-{
-  return generic_share_resources_lazy(now, network_model);
-}
-
-static void net_update_actions_state_full(surf_model_t network_model, double now, double delta)
-{
-  generic_update_actions_state_full(now, delta, network_model);
-}
-
-static void net_update_actions_state_lazy(surf_model_t network_model, double now, double delta)
-{
-  generic_update_actions_state_lazy(now, delta, network_model);
-}
-
-static void net_update_resource_state(void *id,
-                                      tmgr_trace_event_t event_type,
-                                      double value, double date)
-{
-  link_CM02_t nw_link = id;
-  /*   printf("[" "%g" "] Asking to update network card \"%s\" with value " */
-  /*     "%g" " for event %p\n", surf_get_clock(), nw_link->name, */
-  /*     value, event_type); */
-
-  if (event_type == nw_link->lmm_resource.power.event) {
-    double delta =
-        sg_weight_S_parameter / value - sg_weight_S_parameter /
-        (nw_link->lmm_resource.power.peak *
-         nw_link->lmm_resource.power.scale);
-    lmm_variable_t var = NULL;
-    lmm_element_t elem = NULL;
-    surf_action_network_CM02_t action = NULL;
-
-    nw_link->lmm_resource.power.peak = value;
-    lmm_update_constraint_bound(surf_network_model->model_private->maxmin_system,
-                                nw_link->lmm_resource.constraint,
-                                sg_bandwidth_factor *
-                                (nw_link->lmm_resource.power.peak *
-                                 nw_link->lmm_resource.power.scale));
-#ifdef HAVE_TRACING
-    TRACE_surf_link_set_bandwidth(date,
-                                  (char
-                                   *) (((nw_link->lmm_resource).
-                                        generic_resource).name),
-                                  sg_bandwidth_factor *
-                                  (nw_link->lmm_resource.power.peak *
-                                   nw_link->lmm_resource.power.scale));
-#endif
-    if (sg_weight_S_parameter > 0) {
-      while ((var = lmm_get_var_from_cnst
-              (surf_network_model->model_private->maxmin_system, nw_link->lmm_resource.constraint,
-               &elem))) {
-        action = lmm_variable_id(var);
-        action->weight += delta;
-        if (!(GENERIC_LMM_ACTION(action).suspended))
-          lmm_update_variable_weight(surf_network_model->model_private->maxmin_system,
-                                     GENERIC_LMM_ACTION(action).variable, action->weight);
-      }
-    }
-    if (tmgr_trace_event_free(event_type))
-      nw_link->lmm_resource.power.event = NULL;
-  } else if (event_type == nw_link->lat_event) {
-    double delta = value - nw_link->lat_current;
-    lmm_variable_t var = NULL;
-    lmm_element_t elem = NULL;
-    surf_action_network_CM02_t action = NULL;
-
-    nw_link->lat_current = value;
-    while ((var = lmm_get_var_from_cnst
-            (surf_network_model->model_private->maxmin_system, nw_link->lmm_resource.constraint,
-             &elem))) {
-      action = lmm_variable_id(var);
-      action->lat_current += delta;
-      action->weight += delta;
-      if (action->rate < 0)
-        lmm_update_variable_bound(surf_network_model->model_private->maxmin_system, GENERIC_LMM_ACTION(action).variable,
-                                  sg_tcp_gamma / (2.0 *
-                                                  action->lat_current));
-      else {
-        lmm_update_variable_bound(surf_network_model->model_private->maxmin_system, GENERIC_LMM_ACTION(action).variable,
-                                  min(action->rate,
-                                      sg_tcp_gamma / (2.0 *
-                                                      action->
-                                                      lat_current)));
-
-        if (action->rate < sg_tcp_gamma / (2.0 * action->lat_current)) {
-          XBT_INFO("Flow is limited BYBANDWIDTH");
-        } else {
-          XBT_INFO("Flow is limited BYLATENCY, latency of flow is %f",
-                   action->lat_current);
-        }
-      }
-      if (!(GENERIC_LMM_ACTION(action).suspended))
-        lmm_update_variable_weight(surf_network_model->model_private->maxmin_system, GENERIC_LMM_ACTION(action).variable,
-                                   action->weight);
-
-    }
-    if (tmgr_trace_event_free(event_type))
-      nw_link->lat_event = NULL;
-  } else if (event_type == nw_link->lmm_resource.state_event) {
-    if (value > 0)
-      nw_link->lmm_resource.state_current = SURF_RESOURCE_ON;
-    else {
-      lmm_constraint_t cnst = nw_link->lmm_resource.constraint;
-      lmm_variable_t var = NULL;
-      lmm_element_t elem = NULL;
-
-      nw_link->lmm_resource.state_current = SURF_RESOURCE_OFF;
-      while ((var = lmm_get_var_from_cnst
-              (surf_network_model->model_private->maxmin_system, cnst, &elem))) {
-        surf_action_t action = lmm_variable_id(var);
-
-        if (surf_action_state_get(action) == SURF_ACTION_RUNNING ||
-            surf_action_state_get(action) == SURF_ACTION_READY) {
-          action->finish = date;
-          surf_network_model->action_state_set(action, SURF_ACTION_FAILED);
-        }
-      }
-    }
-    if (tmgr_trace_event_free(event_type))
-      nw_link->lmm_resource.state_event = NULL;
-  } else {
-    XBT_CRITICAL("Unknown event ! \n");
-    xbt_abort();
-  }
-
-  XBT_DEBUG
-      ("There were a resource state event, need to update actions related to the constraint (%p)",
-       nw_link->lmm_resource.constraint);
-  return;
-}
-
-
-static surf_action_t net_communicate(sg_routing_edge_t src,
-                                     sg_routing_edge_t dst,
-                                     double size, double rate)
-{
-  unsigned int i;
-  link_CM02_t link;
-  int failed = 0;
-  surf_action_network_CM02_t action = NULL;
-  double bandwidth_bound;
-  double latency = 0.0;
-  xbt_dynar_t back_route = NULL;
-  int constraints_per_variable = 0;
-
-  xbt_dynar_t route = xbt_dynar_new(sizeof(sg_routing_link_t), NULL);
-
-  XBT_IN("(%s,%s,%g,%g)", src->name, dst->name, size, rate);
-
-  routing_get_route_and_latency(src, dst, &route, &latency);
-  xbt_assert(!xbt_dynar_is_empty(route) || latency,
-             "You're trying to send data from %s to %s but there is no connection at all between these two hosts.",
-             src->name, dst->name);
-
-  xbt_dynar_foreach(route, i, link) {
-    if (link->lmm_resource.state_current == SURF_RESOURCE_OFF) {
-      failed = 1;
-      break;
-    }
-  }
-  if (sg_network_crosstraffic == 1) {
-    routing_get_route_and_latency(dst, src, &back_route, NULL);
-    xbt_dynar_foreach(back_route, i, link) {
-      if (link->lmm_resource.state_current == SURF_RESOURCE_OFF) {
-        failed = 1;
-        break;
-      }
-    }
-  }
-
-  action =
-      surf_action_new(sizeof(s_surf_action_network_CM02_t), size,
-                      surf_network_model, failed);
-#ifdef HAVE_LATENCY_BOUND_TRACKING
-  action->latency_limited = 0;
-#endif
-  action->weight = action->latency = latency;
-
-  xbt_swag_insert(action, ((surf_action_t)action)->state_set);
-  action->rate = rate;
-  if (surf_network_model->model_private->update_mechanism == UM_LAZY) {
-    GENERIC_LMM_ACTION(action).index_heap = -1;
-    GENERIC_LMM_ACTION(action).last_update = surf_get_clock();
-  }
-
-  bandwidth_bound = -1.0;
-  if (sg_weight_S_parameter > 0) {
-    xbt_dynar_foreach(route, i, link) {
-      action->weight +=
-          sg_weight_S_parameter /
-          (link->lmm_resource.power.peak * link->lmm_resource.power.scale);
-    }
-  }
-  xbt_dynar_foreach(route, i, link) {
-    double bb = bandwidth_factor_callback(size) *
-        (link->lmm_resource.power.peak * link->lmm_resource.power.scale);
-    bandwidth_bound =
-        (bandwidth_bound < 0.0) ? bb : min(bandwidth_bound, bb);
-  }
-
-  action->lat_current = action->latency;
-  action->latency *= latency_factor_callback(size);
-  action->rate =
-      bandwidth_constraint_callback(action->rate, bandwidth_bound, size);
-  if (gap_append) {
-    xbt_assert(!xbt_dynar_is_empty(route),
-               "Using a model with a gap (e.g., SMPI) with a platform without links (e.g. vivaldi)!!!");
-
-    link = *(link_CM02_t *) xbt_dynar_get_ptr(route, 0);
-    gap_append(size, link, action);
-    XBT_DEBUG("Comm %p: %s -> %s gap=%f (lat=%f)",
-              action, src->name, dst->name, action->sender.gap,
-              action->latency);
-  }
-
-  constraints_per_variable = xbt_dynar_length(route);
-  if (back_route != NULL)
-    constraints_per_variable += xbt_dynar_length(back_route);
-
-  if (action->latency > 0) {
-    GENERIC_LMM_ACTION(action).variable =
-        lmm_variable_new(surf_network_model->model_private->maxmin_system, action, 0.0, -1.0,
-                         constraints_per_variable);
-    if (surf_network_model->model_private->update_mechanism == UM_LAZY) {
-      // add to the heap the event when the latency is payed
-      XBT_DEBUG("Added action (%p) one latency event at date %f", action,
-                action->latency + GENERIC_LMM_ACTION(action).last_update);
-      surf_action_lmm_heap_insert(surf_network_model->model_private->action_heap,(surf_action_lmm_t)action, action->latency + GENERIC_LMM_ACTION(action).last_update,
-                  xbt_dynar_is_empty(route) ? NORMAL : LATENCY);
-    }
-  } else
-    GENERIC_LMM_ACTION(action).variable =
-        lmm_variable_new(surf_network_model->model_private->maxmin_system, action, 1.0, -1.0,
-                         constraints_per_variable);
-
-  if (action->rate < 0) {
-    lmm_update_variable_bound(surf_network_model->model_private->maxmin_system, GENERIC_LMM_ACTION(action).variable,
-                              (action->lat_current > 0) ?
-                              sg_tcp_gamma / (2.0 *
-                                              action->lat_current) : -1.0);
-  } else {
-    lmm_update_variable_bound(surf_network_model->model_private->maxmin_system, GENERIC_LMM_ACTION(action).variable,
-                              (action->lat_current > 0) ?
-                              min(action->rate,
-                                  sg_tcp_gamma / (2.0 *
-                                                  action->lat_current))
-                              : action->rate);
-  }
-
-  xbt_dynar_foreach(route, i, link) {
-    lmm_expand(surf_network_model->model_private->maxmin_system, link->lmm_resource.constraint,
-               GENERIC_LMM_ACTION(action).variable, 1.0);
-  }
-
-  if (sg_network_crosstraffic == 1) {
-    XBT_DEBUG("Fullduplex active adding backward flow using 5%%");
-    xbt_dynar_foreach(back_route, i, link) {
-      lmm_expand(surf_network_model->model_private->maxmin_system, link->lmm_resource.constraint,
-                 GENERIC_LMM_ACTION(action).variable, .05);
-    }
-  }
-
-  xbt_dynar_free(&route);
-  XBT_OUT();
-
-  return (surf_action_t) action;
-}
-
-static xbt_dynar_t net_get_route(void *src, void *dst)
-{
-  xbt_dynar_t route = NULL;
-  routing_get_route_and_latency(src, dst, &route, NULL);
-  return route;
-}
-
-static double net_get_link_bandwidth(const void *link)
-{
-  surf_resource_lmm_t lmm = (surf_resource_lmm_t) link;
-  return lmm->power.peak * lmm->power.scale;
-}
-
-static double net_get_link_latency(const void *link)
-{
-  return ((link_CM02_t) link)->lat_current;
-}
-
-static int net_link_shared(const void *link)
-{
-  return
-      lmm_constraint_is_shared(((surf_resource_lmm_t) link)->constraint);
-}
-
-static void net_finalize(surf_model_t network_model)
-{
-  lmm_system_free(network_model->model_private->maxmin_system);
-  network_model->model_private->maxmin_system = NULL;
-
-  if (network_model->model_private->update_mechanism == UM_LAZY) {
-    xbt_heap_free(network_model->model_private->action_heap);
-    xbt_swag_free(network_model->model_private->modified_set);
-  }
-
-  surf_model_exit(network_model);
-  network_model = NULL;
-
-  xbt_dict_free(&gap_lookup);
-  xbt_dynar_free(&smpi_bw_factor);
-  xbt_dynar_free(&smpi_lat_factor);
-}
-
-static void smpi_gap_append(double size, const link_CM02_t link,
-                            surf_action_network_CM02_t action)
-{
-  const char *src = link->lmm_resource.generic_resource.name;
-  xbt_fifo_t fifo;
-  //surf_action_network_CM02_t last_action;
-  //double bw;
-
-  if (sg_sender_gap > 0.0) {
-    if (!gap_lookup) {
-      gap_lookup = xbt_dict_new_homogeneous(NULL);
-    }
-    fifo = (xbt_fifo_t) xbt_dict_get_or_null(gap_lookup, src);
-    action->sender.gap = 0.0;
-    if (fifo && xbt_fifo_size(fifo) > 0) {
-      /* Compute gap from last send */
-      /*last_action =
-          (surf_action_network_CM02_t)
-          xbt_fifo_get_item_content(xbt_fifo_get_last_item(fifo));*/
-     // bw = net_get_link_bandwidth(link);
-      action->sender.gap = sg_sender_gap;
-        /*  max(sg_sender_gap,last_action->sender.size / bw);*/
-      action->latency += action->sender.gap;
-    }
-    /* Append action as last send */
-    /*action->sender.link_name = link->lmm_resource.generic_resource.name;
-    fifo =
-        (xbt_fifo_t) xbt_dict_get_or_null(gap_lookup,
-                                          action->sender.link_name);
-    if (!fifo) {
-      fifo = xbt_fifo_new();
-      xbt_dict_set(gap_lookup, action->sender.link_name, fifo, NULL);
-    }
-    action->sender.fifo_item = xbt_fifo_push(fifo, action);*/
-    action->sender.size = size;
-  }
-}
-
-static void smpi_gap_remove(surf_action_lmm_t lmm_action)
-{
-  xbt_fifo_t fifo;
-  size_t size;
-  surf_action_network_CM02_t action = (surf_action_network_CM02_t)(lmm_action);
-
-  if (sg_sender_gap > 0.0 && action->sender.link_name
-      && action->sender.fifo_item) {
-    fifo =
-        (xbt_fifo_t) xbt_dict_get_or_null(gap_lookup,
-                                          action->sender.link_name);
-    xbt_fifo_remove_item(fifo, action->sender.fifo_item);
-    size = xbt_fifo_size(fifo);
-    if (size == 0) {
-      xbt_fifo_free(fifo);
-      xbt_dict_remove(gap_lookup, action->sender.link_name);
-      size = xbt_dict_length(gap_lookup);
-      if (size == 0) {
-        xbt_dict_free(&gap_lookup);
-      }
-    }
-  }
-}
-
-static void set_update_mechanism(void)
-{
-  char *optim = xbt_cfg_get_string(_sg_cfg_set, "network/optim");
-  int select =
-      xbt_cfg_get_boolean(_sg_cfg_set, "network/maxmin_selective_update");
-
-  if (!strcmp(optim, "Full")) {
-    surf_network_model->model_private->update_mechanism = UM_FULL;
-    surf_network_model->model_private->selective_update = select;
-  } else if (!strcmp(optim, "Lazy")) {
-    surf_network_model->model_private->update_mechanism = UM_LAZY;
-    surf_network_model->model_private->selective_update = 1;
-    xbt_assert((select == 1)
-               ||
-               (xbt_cfg_is_default_value
-                (_sg_cfg_set, "network/maxmin_selective_update")),
-               "Disabling selective update while using the lazy update mechanism is dumb!");
-  } else {
-    xbt_die("Unsupported optimization (%s) for this model", optim);
-  }
-}
-
-static void surf_network_model_init_internal(void)
-{
-  s_surf_action_network_CM02_t comm;
-  surf_network_model = surf_model_init();
-
-  set_update_mechanism();
-
-  surf_network_model->name = "network";
-  surf_network_model->type = SURF_MODEL_TYPE_NETWORK;
-  surf_network_model->action_unref = surf_action_unref;
-  surf_network_model->action_cancel = surf_action_cancel;
-  surf_network_model->action_recycle = net_action_recycle;
-
-  surf_network_model->get_remains = surf_action_get_remains;
-
-#ifdef HAVE_LATENCY_BOUND_TRACKING
-  surf_network_model->get_latency_limited = net_get_link_latency_limited;
-#endif
-#ifdef HAVE_TRACING
-  surf_network_model->set_category = surf_action_set_category;
-#endif
-
-  surf_network_model->model_private->resource_used = net_resource_used;
-  if (surf_network_model->model_private->update_mechanism == UM_LAZY) {
-    surf_network_model->model_private->share_resources =
-        net_share_resources_lazy;
-    surf_network_model->model_private->update_actions_state =
-        net_update_actions_state_lazy;
-  } else if (surf_network_model->model_private->update_mechanism == UM_FULL) {
-    surf_network_model->model_private->share_resources =
-        net_share_resources_full;
-    surf_network_model->model_private->update_actions_state =
-        net_update_actions_state_full;
-  }
-
-  surf_network_model->model_private->update_resource_state =
-      net_update_resource_state;
-  surf_network_model->model_private->finalize = net_finalize;
-
-  surf_network_model->suspend = surf_action_suspend;
-  surf_network_model->resume = surf_action_resume;
-  surf_network_model->is_suspended = surf_action_is_suspended;
-
-  xbt_assert(surf_cpu_model_pm);
-  xbt_assert(surf_cpu_model_vm);
-  surf_cpu_model_pm->set_max_duration = surf_action_set_max_duration;
-  surf_cpu_model_vm->set_max_duration = surf_action_set_max_duration;
-
-  surf_network_model->extension.network.communicate = net_communicate;
-  surf_network_model->extension.network.get_route = net_get_route;
-  surf_network_model->extension.network.get_link_bandwidth =
-      net_get_link_bandwidth;
-  surf_network_model->extension.network.get_link_latency =
-      net_get_link_latency;
-  surf_network_model->extension.network.link_shared = net_link_shared;
-  surf_network_model->extension.network.add_traces = net_add_traces;
-
-  if (!surf_network_model->model_private->maxmin_system)
-    surf_network_model->model_private->maxmin_system = lmm_system_new(surf_network_model->model_private->selective_update);
-
-  routing_model_create(net_create_resource("__loopback__",
-                                           498000000, NULL, 0.000015, NULL,
-                                           SURF_RESOURCE_ON, NULL,
-                                           SURF_LINK_FATPIPE, NULL));
-
-  if (surf_network_model->model_private->update_mechanism == UM_LAZY) {
-    surf_network_model->model_private->action_heap = xbt_heap_new(8, NULL);
-    xbt_heap_set_update_callback(surf_network_model->model_private->action_heap,
-                                 surf_action_lmm_update_index_heap);
-    surf_network_model->model_private->modified_set =
-        xbt_swag_new(xbt_swag_offset(comm, generic_lmm_action.action_list_hookup));
-    surf_network_model->model_private->maxmin_system->keep_track = surf_network_model->model_private->modified_set;
-  }
-
-  surf_network_model->gap_remove = NULL;
-}
-
-/************************************************************************/
-/* New model based on LV08 and experimental results of MPI ping-pongs   */
-/************************************************************************/
-/* @Inproceedings{smpi_ipdps, */
-/*  author={Pierre-Nicolas Clauss and Mark Stillwell and Stéphane Genaud and Frédéric Suter and Henri Casanova and Martin Quinson}, */
-/*  title={Single Node On-Line Simulation of {MPI} Applications with SMPI}, */
-/*  booktitle={25th IEEE International Parallel and Distributed Processing Symposium (IPDPS'11)}, */
-/*  address={Anchorage (Alaska) USA}, */
-/*  month=may, */
-/*  year={2011} */
-/*  } */
-void surf_network_model_init_SMPI(void)
-{
-
-  if (surf_network_model)
-    return;
-
-  surf_network_model_init_internal();
-  latency_factor_callback = &smpi_latency_factor;
-  bandwidth_factor_callback = &smpi_bandwidth_factor;
-  bandwidth_constraint_callback = &smpi_bandwidth_constraint;
-  gap_append = &smpi_gap_append;
-  surf_network_model->gap_remove = &smpi_gap_remove;
-  net_define_callbacks();
-  xbt_dynar_push(model_list, &surf_network_model);
-  network_solve = lmm_solve;
-
-  xbt_cfg_setdefault_double(_sg_cfg_set, "network/sender_gap", 10e-6);
-  xbt_cfg_setdefault_double(_sg_cfg_set, "network/weight_S", 8775);
-}
-
-/************************************************************************/
-/* New model based on optimizations discussed during Pedro Velho's thesis*/
-/************************************************************************/
-/* @techreport{VELHO:2011:HAL-00646896:1, */
-/*      url = {http://hal.inria.fr/hal-00646896/en/}, */
-/*      title = {{Flow-level network models: have we reached the limits?}}, */
-/*      author = {Velho, Pedro and Schnorr, Lucas and Casanova, Henri and Legrand, Arnaud}, */
-/*      type = {Rapport de recherche}, */
-/*      institution = {INRIA}, */
-/*      number = {RR-7821}, */
-/*      year = {2011}, */
-/*      month = Nov, */
-/*      pdf = {http://hal.inria.fr/hal-00646896/PDF/rr-validity.pdf}, */
-/*  } */
-void surf_network_model_init_LegrandVelho(void)
-{
-  if (surf_network_model)
-    return;
-
-  surf_network_model_init_internal();
-  net_define_callbacks();
-  xbt_dynar_push(model_list, &surf_network_model);
-  network_solve = lmm_solve;
-
-  xbt_cfg_setdefault_double(_sg_cfg_set, "network/latency_factor",
-                            13.01);
-  xbt_cfg_setdefault_double(_sg_cfg_set, "network/bandwidth_factor",
-                            0.97);
-  xbt_cfg_setdefault_double(_sg_cfg_set, "network/weight_S", 20537);
-}
-
-/***************************************************************************/
-/* The nice TCP sharing model designed by Loris Marchal and Henri Casanova */
-/***************************************************************************/
-/* @TechReport{      rr-lip2002-40, */
-/*   author        = {Henri Casanova and Loris Marchal}, */
-/*   institution   = {LIP}, */
-/*   title         = {A Network Model for Simulation of Grid Application}, */
-/*   number        = {2002-40}, */
-/*   month         = {oct}, */
-/*   year          = {2002} */
-/* } */
-void surf_network_model_init_CM02(void)
-{
-
-  if (surf_network_model)
-    return;
-
-  surf_network_model_init_internal();
-  net_define_callbacks();
-  xbt_dynar_push(model_list, &surf_network_model);
-  network_solve = lmm_solve;
-
-  xbt_cfg_setdefault_double(_sg_cfg_set, "network/latency_factor", 1.0);
-  xbt_cfg_setdefault_double(_sg_cfg_set, "network/bandwidth_factor",
-                            1.0);
-  xbt_cfg_setdefault_double(_sg_cfg_set, "network/weight_S", 0.0);
-}
-
-/***************************************************************************/
-/* The models from Steven H. Low                                           */
-/***************************************************************************/
-/* @article{Low03,                                                         */
-/*   author={Steven H. Low},                                               */
-/*   title={A Duality Model of {TCP} and Queue Management Algorithms},     */
-/*   year={2003},                                                          */
-/*   journal={{IEEE/ACM} Transactions on Networking},                      */
-/*    volume={11}, number={4},                                             */
-/*  }                                                                      */
-void surf_network_model_init_Reno(void)
-{
-  if (surf_network_model)
-    return;
-
-  surf_network_model_init_internal();
-  net_define_callbacks();
-
-  xbt_dynar_push(model_list, &surf_network_model);
-  lmm_set_default_protocol_function(func_reno_f, func_reno_fp,
-                                    func_reno_fpi);
-  network_solve = lagrange_solve;
-
-  xbt_cfg_setdefault_double(_sg_cfg_set, "network/latency_factor", 10.4);
-  xbt_cfg_setdefault_double(_sg_cfg_set, "network/bandwidth_factor",
-                            0.92);
-  xbt_cfg_setdefault_double(_sg_cfg_set, "network/weight_S", 8775);
-}
-
-
-void surf_network_model_init_Reno2(void)
-{
-  if (surf_network_model)
-    return;
-
-  surf_network_model_init_internal();
-  net_define_callbacks();
-
-  xbt_dynar_push(model_list, &surf_network_model);
-  lmm_set_default_protocol_function(func_reno2_f, func_reno2_fp,
-                                    func_reno2_fpi);
-  network_solve = lagrange_solve;
-
-  xbt_cfg_setdefault_double(_sg_cfg_set, "network/latency_factor", 10.4);
-  xbt_cfg_setdefault_double(_sg_cfg_set, "network/bandwidth_factor",
-                            0.92);
-  xbt_cfg_setdefault_double(_sg_cfg_set, "network/weight_S_parameter",
-                            8775);
-}
-
-void surf_network_model_init_Vegas(void)
-{
-  if (surf_network_model)
-    return;
-
-  surf_network_model_init_internal();
-  net_define_callbacks();
-
-  xbt_dynar_push(model_list, &surf_network_model);
-  lmm_set_default_protocol_function(func_vegas_f, func_vegas_fp,
-                                    func_vegas_fpi);
-  network_solve = lagrange_solve;
-
-  xbt_cfg_setdefault_double(_sg_cfg_set, "network/latency_factor", 10.4);
-  xbt_cfg_setdefault_double(_sg_cfg_set, "network/bandwidth_factor",
-                            0.92);
-  xbt_cfg_setdefault_double(_sg_cfg_set, "network/weight_S", 8775);
-}
diff --git a/src/surf/network.hpp b/src/surf/network.hpp
deleted file mode 100644 (file)
index 5acdb12..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-#include "surf.hpp"
-#include "xbt/fifo.h"
-#include "xbt/graph.h"
-#include "surf_routing.hpp"
-
-#ifndef SURF_MODEL_NETWORK_H_
-#define SURF_MODEL_NETWORK_H_
-
-/***********
- * Classes *
- ***********/
-class NetworkCm02Model;
-typedef NetworkCm02Model *NetworkCm02ModelPtr;
-
-class NetworkCm02Link;
-typedef NetworkCm02Link *NetworkCm02LinkPtr;
-
-class NetworkCm02LinkLmm;
-typedef NetworkCm02LinkLmm *NetworkCm02LinkLmmPtr;
-
-class NetworkCm02Action;
-typedef NetworkCm02Action *NetworkCm02ActionPtr;
-
-class NetworkCm02ActionLmm;
-typedef NetworkCm02ActionLmm *NetworkCm02ActionLmmPtr;
-
-/*********
- * Tools *
- *********/
-extern NetworkCm02ModelPtr surf_network_model;
-
-void net_define_callbacks(void);
-
-/*********
- * Model *
- *********/
-class NetworkCm02Model : public Model {
-private:
-  void initialize();
-public:
-  NetworkCm02Model(int /*i*/) : Model("network") {
-       f_networkSolve = lmm_solve;
-       m_haveGap = false;
-  };//FIXME: add network clean interface
-  NetworkCm02Model(string name) : Model(name) {
-    this->initialize();
-  }
-  NetworkCm02Model() : Model("network") {
-    this->initialize();
-  }
-  ~NetworkCm02Model() {
-       if (p_maxminSystem)
-         lmm_system_free(p_maxminSystem);
-       if (p_actionHeap)
-         xbt_heap_free(p_actionHeap);
-       if (p_modifiedSet)
-         xbt_swag_free(p_modifiedSet);
-  }
-  //FIXME:NetworkCm02LinkPtr createResource(string name);
-  NetworkCm02LinkLmmPtr createResource(const char *name,
-                                   double bw_initial,
-                                   tmgr_trace_t bw_trace,
-                                   double lat_initial,
-                                   tmgr_trace_t lat_trace,
-                                   e_surf_resource_state_t state_initial,
-                                   tmgr_trace_t state_trace,
-                                   e_surf_link_sharing_policy_t policy,
-                                   xbt_dict_t properties);
-  void updateActionsStateLazy(double now, double delta);
-  virtual void gapAppend(double /*size*/, const NetworkCm02LinkLmmPtr /*link*/, NetworkCm02ActionLmmPtr /*action*/) {};
-  virtual ActionPtr communicate(RoutingEdgePtr src, RoutingEdgePtr dst,
-                                          double size, double rate);
-  xbt_dynar_t getRoute(RoutingEdgePtr src, RoutingEdgePtr dst); //FIXME: kill field? That is done by the routing nowadays
-  //FIXME: virtual void addTraces() =0;
-  void (*f_networkSolve)(lmm_system_t);
-  virtual double latencyFactor(double size);
-  virtual double bandwidthFactor(double size);
-  virtual double bandwidthConstraint(double rate, double bound, double size);
-  bool m_haveGap;
-};
-
-/************
- * Resource *
- ************/
-
-class NetworkCm02Link : virtual public Resource {
-public:
-  NetworkCm02Link() : p_latEvent(NULL) {};
-  NetworkCm02Link(NetworkCm02ModelPtr model, const char* name, xbt_dict_t properties)
-    : Resource(model, name, properties), p_latEvent(NULL) {};
-  virtual double getBandwidth()=0;
-  virtual double getLatency();
-  virtual bool isShared()=0;
-  /* Using this object with the public part of
-    model does not make sense */
-  double m_latCurrent;
-  tmgr_trace_event_t p_latEvent;
-};
-
-class NetworkCm02LinkLmm : public ResourceLmm, public NetworkCm02Link {
-public:
-  NetworkCm02LinkLmm(NetworkCm02ModelPtr model, const char* name, xbt_dict_t properties)
-   : ResourceLmm(), NetworkCm02Link(model, name, properties) {};
-  NetworkCm02LinkLmm(NetworkCm02ModelPtr model, const char *name, xbt_dict_t props,
-                                  lmm_system_t system,
-                                  double constraint_value,
-                                  tmgr_history_t history,
-                                  e_surf_resource_state_t state_init,
-                                  tmgr_trace_t state_trace,
-                                  double metric_peak,
-                                  tmgr_trace_t metric_trace,
-                                  double lat_initial,
-                                  tmgr_trace_t lat_trace,
-                               e_surf_link_sharing_policy_t policy);
-  bool isShared();
-  bool isUsed();
-  double getBandwidth();
-  void updateState(tmgr_trace_event_t event_type, double value, double date);
-};
-
-
-/**********
- * Action *
- **********/
-class NetworkCm02Action : virtual public Action {
-public:
-  NetworkCm02Action(ModelPtr model, double cost, bool failed)
- : Action(model, cost, failed) {};
-  double m_latency;
-  double m_latCurrent;
-  double m_weight;
-  double m_rate;
-  const char* p_senderLinkName;
-  double m_senderGap;
-  double m_senderSize;
-  xbt_fifo_item_t p_senderFifoItem;
-#ifdef HAVE_LATENCY_BOUND_TRACKING
-  int m_latencyLimited;
-#endif
-
-};
-
-class NetworkCm02ActionLmm : public ActionLmm, public NetworkCm02Action {
-public:
-  NetworkCm02ActionLmm(ModelPtr model, double cost, bool failed)
- : Action(model, cost, failed),
-   ActionLmm(model, cost, failed),
-   NetworkCm02Action(model, cost, failed) {};
-  void updateRemainingLazy(double now);
-  void recycle();
-};
-
-#endif /* SURF_MODEL_NETWORK_H_ */
similarity index 95%
rename from src/surf/network.cpp
rename to src/surf/network_cm02.cpp
index a158d7f..624b104 100644 (file)
@@ -1,4 +1,4 @@
-#include "network.hpp"
+#include "network_cm02.hpp"
 #include "maxmin_private.h"
 #include "simgrid/sg_config.h"
 
@@ -7,8 +7,6 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_network, surf,
                                 "Logging specific to the SURF network module");
 }
 
-NetworkCm02ModelPtr surf_network_model = NULL;
-
 double sg_sender_gap = 0.0;
 double sg_latency_factor = 1.0; /* default value; can be set by model or from command line */
 double sg_bandwidth_factor = 1.0;       /* default value; can be set by model or from command line */
@@ -290,7 +288,7 @@ void NetworkCm02Model::initialize()
   m_haveGap = false;
 }
 
-NetworkCm02LinkLmmPtr NetworkCm02Model::createResource(const char *name,
+NetworkLinkPtr NetworkCm02Model::createResource(const char *name,
                                  double bw_initial,
                                  tmgr_trace_t bw_trace,
                                  double lat_initial,
@@ -330,7 +328,7 @@ void NetworkCm02Model::updateActionsStateLazy(double now, double /*delta*/)
         lmm_constraint_t constraint = lmm_get_cnst_from_var(p_maxminSystem,
                                                             action->p_variable,
                                                             i);
-        NetworkCm02LinkPtr link = static_cast<NetworkCm02LinkPtr>(lmm_constraint_id(constraint));
+        NetworkCm02LinkLmmPtr link = static_cast<NetworkCm02LinkLmmPtr>(lmm_constraint_id(constraint));
         TRACE_surf_link_set_utilization(link->m_name,
                                         action->p_category,
                                         (lmm_variable_getvalue(action->p_variable)*
@@ -368,13 +366,6 @@ void NetworkCm02Model::updateActionsStateLazy(double now, double /*delta*/)
   return;
 }
 
-xbt_dynar_t NetworkCm02Model::getRoute(RoutingEdgePtr src, RoutingEdgePtr dst)
-{
-  xbt_dynar_t route = NULL;
-  routing_platf->getRouteAndLatency(src, dst, &route, NULL);
-  return route;
-}
-
 ActionPtr NetworkCm02Model::communicate(RoutingEdgePtr src, RoutingEdgePtr dst,
                                                 double size, double rate)
 {
@@ -501,17 +492,7 @@ ActionPtr NetworkCm02Model::communicate(RoutingEdgePtr src, RoutingEdgePtr dst,
   return action;
 }
 
-double NetworkCm02Model::latencyFactor(double /*size*/) {
-  return sg_latency_factor;
-}
 
-double NetworkCm02Model::bandwidthFactor(double /*size*/) {
-  return sg_bandwidth_factor;
-}
-
-double NetworkCm02Model::bandwidthConstraint(double rate, double /*bound*/, double /*size*/) {
-  return rate;
-}
 
 /************
  * Resource *
@@ -528,8 +509,7 @@ NetworkCm02LinkLmm::NetworkCm02LinkLmm(NetworkCm02ModelPtr model, const char *na
                                   tmgr_trace_t lat_trace,
                                   e_surf_link_sharing_policy_t policy)
 : Resource(model, name, props),
-  ResourceLmm(model, name, props, system, constraint_value, history, state_init, state_trace, metric_peak, metric_trace),
-  NetworkCm02Link(model, name, props)
+  NetworkLinkLmm(system, constraint_value, history, state_init, state_trace, metric_peak, metric_trace)
 {
   m_latCurrent = lat_initial;
   if (lat_trace)
@@ -539,25 +519,7 @@ NetworkCm02LinkLmm::NetworkCm02LinkLmm(NetworkCm02ModelPtr model, const char *na
        lmm_constraint_shared(p_constraint);
 }
 
-bool NetworkCm02LinkLmm::isUsed()
-{
-  return lmm_constraint_used(p_model->p_maxminSystem, p_constraint);
-}
-
-double NetworkCm02Link::getLatency()
-{
-  return m_latCurrent;
-}
 
-double NetworkCm02LinkLmm::getBandwidth()
-{
-  return p_power.peak * p_power.scale;
-}
-
-bool NetworkCm02LinkLmm::isShared()
-{
-  return lmm_constraint_is_shared(p_constraint);
-}
 
 void NetworkCm02LinkLmm::updateState(tmgr_trace_event_t event_type,
                                       double value, double date)
diff --git a/src/surf/network_cm02.hpp b/src/surf/network_cm02.hpp
new file mode 100644 (file)
index 0000000..bd8821a
--- /dev/null
@@ -0,0 +1,93 @@
+#include "network_interface.hpp"
+#include "xbt/fifo.h"
+#include "xbt/graph.h"
+
+#ifndef SURF_NETWORK_CM02_HPP_
+#define SURF_NETWORK_CM02_HPP_
+
+/***********
+ * Classes *
+ ***********/
+class NetworkCm02Model;
+typedef NetworkCm02Model *NetworkCm02ModelPtr;
+
+class NetworkCm02LinkLmm;
+typedef NetworkCm02LinkLmm *NetworkCm02LinkLmmPtr;
+
+class NetworkCm02ActionLmm;
+typedef NetworkCm02ActionLmm *NetworkCm02ActionLmmPtr;
+
+/*********
+ * Tools *
+ *********/
+
+void net_define_callbacks(void);
+
+/*********
+ * Model *
+ *********/
+class NetworkCm02Model : public NetworkModel {
+private:
+  void initialize();
+public:
+  NetworkCm02Model(int /*i*/) : NetworkModel("network") {
+       f_networkSolve = lmm_solve;
+       m_haveGap = false;
+  };//FIXME: add network clean interface
+  NetworkCm02Model(string name) : NetworkModel(name) {
+    this->initialize();
+  }
+  NetworkCm02Model() : NetworkModel("network") {
+    this->initialize();
+  }
+  ~NetworkCm02Model() {
+  }
+  NetworkLinkPtr createResource(const char *name,
+                                   double bw_initial,
+                                   tmgr_trace_t bw_trace,
+                                   double lat_initial,
+                                   tmgr_trace_t lat_trace,
+                                   e_surf_resource_state_t state_initial,
+                                   tmgr_trace_t state_trace,
+                                   e_surf_link_sharing_policy_t policy,
+                                   xbt_dict_t properties);
+  void updateActionsStateLazy(double now, double delta);
+  void gapAppend(double /*size*/, const NetworkCm02LinkLmmPtr /*link*/, NetworkCm02ActionLmmPtr /*action*/) {};
+  ActionPtr communicate(RoutingEdgePtr src, RoutingEdgePtr dst,
+                                          double size, double rate);
+};
+
+/************
+ * Resource *
+ ************/
+
+class NetworkCm02LinkLmm : public NetworkLinkLmm {
+public:
+  NetworkCm02LinkLmm(NetworkCm02ModelPtr model, const char *name, xbt_dict_t props,
+                                  lmm_system_t system,
+                                  double constraint_value,
+                                  tmgr_history_t history,
+                                  e_surf_resource_state_t state_init,
+                                  tmgr_trace_t state_trace,
+                                  double metric_peak,
+                                  tmgr_trace_t metric_trace,
+                                  double lat_initial,
+                                  tmgr_trace_t lat_trace,
+                               e_surf_link_sharing_policy_t policy);
+  void updateState(tmgr_trace_event_t event_type, double value, double date);
+};
+
+
+/**********
+ * Action *
+ **********/
+
+class NetworkCm02ActionLmm : public NetworkActionLmm {
+public:
+  NetworkCm02ActionLmm(ModelPtr model, double cost, bool failed)
+ : Action(model, cost, failed) {};
+  void updateRemainingLazy(double now);
+  void recycle();
+};
+
+#endif /* SURF_NETWORK_CM02_HPP_ */
index dc1c416..f9b8605 100644 (file)
@@ -1,4 +1,4 @@
-#include "network.hpp"
+#include "network_cm02.hpp"
 
 #ifndef NETWORK_CONSTANT_HPP_
 #define NETWORK_CONSTANT_HPP_
index 54b2b9b..e16ba5e 100644 (file)
@@ -1,4 +1,4 @@
-#include "network.hpp"
+#include "network_cm02.hpp"
 
 /***********
  * Classes *
index ac32b8d..4c1ff82 100644 (file)
@@ -1,7 +1,7 @@
 #include "surf_private.h"
 #include "surf.hpp"
-#include "network.hpp"
-#include "cpu.hpp"
+#include "network_interface.hpp"
+#include "cpu_interface.hpp"
 #include "workstation.hpp"
 #include "vm_workstation.hpp"
 #include "simix/smx_host_private.h"
@@ -314,7 +314,7 @@ static XBT_INLINE void surf_cpu_free(void *r)
 
 static XBT_INLINE void surf_link_free(void *r)
 {
-  delete dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(r));
+  delete dynamic_cast<NetworkLinkPtr>(static_cast<ResourcePtr>(r));
 }
 
 static XBT_INLINE void surf_workstation_free(void *r)
@@ -717,15 +717,13 @@ void Resource::turnOff()
   }
 }
 
-ResourceLmm::ResourceLmm(surf_model_t model, const char *name, xbt_dict_t props,
-                         lmm_system_t system,
+ResourceLmm::ResourceLmm(lmm_system_t system,
                          double constraint_value,
                          tmgr_history_t history,
                          e_surf_resource_state_t state_init,
                          tmgr_trace_t state_trace,
                          double metric_peak,
                          tmgr_trace_t metric_trace)
-  : Resource(model, name, props)
 {
   p_constraint = lmm_constraint_new(system, this, constraint_value);
   p_stateCurrent = state_init;
index 8415040..8f4d918 100644 (file)
@@ -208,14 +208,13 @@ public:
   ResourceLmm() : p_constraint(NULL) {
        p_power.event = NULL;
   };
-  ResourceLmm(surf_model_t model, const char *name, xbt_dict_t props,
-                           lmm_system_t system,
-                           double constraint_value,
-                           tmgr_history_t history,
-                           e_surf_resource_state_t state_init,
-                           tmgr_trace_t state_trace,
-                           double metric_peak,
-                           tmgr_trace_t metric_trace);
+  ResourceLmm(lmm_system_t system,
+              double constraint_value,
+              tmgr_history_t history,
+              e_surf_resource_state_t state_init,
+              tmgr_trace_t state_trace,
+              double metric_peak,
+              tmgr_trace_t metric_trace);
   ~ResourceLmm() {
   };
   lmm_constraint_t p_constraint;
similarity index 98%
rename from src/surf/surf_interface.cpp
rename to src/surf/surf_c_bindings.cpp
index f2ac787..4882897 100644 (file)
@@ -1,7 +1,7 @@
 #include "surf.hpp"
 #include "workstation.hpp"
 #include "vm_workstation.hpp"
-#include "network.hpp"
+#include "network_interface.hpp"
 #include "surf_routing_cluster.hpp"
 #include "instr/instr_private.h"
 
@@ -220,7 +220,7 @@ void *surf_as_cluster_get_backbone(AS_t as){
 }
 
 void surf_as_cluster_set_backbone(AS_t as, void* backbone){
-  static_cast<AsClusterPtr>(as)->p_backbone = dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(backbone));
+  static_cast<AsClusterPtr>(as)->p_backbone = dynamic_cast<NetworkLinkPtr>(static_cast<ResourcePtr>(backbone));
 }
 
 const char *surf_model_name(surf_model_t model){
@@ -426,15 +426,15 @@ void surf_vm_workstation_set_affinity(surf_resource_t resource, surf_resource_t
 }
 
 int surf_network_link_is_shared(surf_cpp_resource_t link){
-  return dynamic_cast<NetworkCm02LinkPtr>(link)->isShared();
+  return dynamic_cast<NetworkLinkPtr>(link)->isShared();
 }
 
 double surf_network_link_get_bandwidth(surf_cpp_resource_t link){
-  return dynamic_cast<NetworkCm02LinkPtr>(link)->getBandwidth();
+  return dynamic_cast<NetworkLinkPtr>(link)->getBandwidth();
 }
 
 double surf_network_link_get_latency(surf_cpp_resource_t link){
-  return dynamic_cast<NetworkCm02LinkPtr>(link)->getLatency();
+  return dynamic_cast<NetworkLinkPtr>(link)->getLatency();
 }
 
 xbt_dict_t surf_storage_get_content(surf_resource_t resource){
index 33bbf73..ec647c8 100644 (file)
@@ -40,7 +40,7 @@ void AsCluster::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl
     if((src->m_id == dst->m_id) && info.loopback_link  ){
       xbt_dynar_push_as(route->link_list, void *, info.loopback_link);
       if (lat)
-        *lat += dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(info.loopback_link))->getLatency();
+        *lat += dynamic_cast<NetworkLinkPtr>(static_cast<ResourcePtr>(info.loopback_link))->getLatency();
       return;
     }
 
@@ -51,7 +51,7 @@ void AsCluster::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl
     if (info.link_up) {         // link up
       xbt_dynar_push_as(route->link_list, void *, info.link_up);
       if (lat)
-        *lat += dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(info.link_up))->getLatency();
+        *lat += dynamic_cast<NetworkLinkPtr>(static_cast<ResourcePtr>(info.link_up))->getLatency();
     }
   }
 
@@ -67,7 +67,7 @@ void AsCluster::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl
     if (info.link_down) {       // link down
       xbt_dynar_push_as(route->link_list, void *, info.link_down);
       if (lat)
-        *lat += dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(info.link_down))->getLatency();
+        *lat += dynamic_cast<NetworkLinkPtr>(static_cast<ResourcePtr>(info.link_down))->getLatency();
     }
 
     if (info.limiter_link)          // limiter for receiver
index 90d1378..b134050 100644 (file)
@@ -1,5 +1,5 @@
 #include "surf_routing_none.hpp"
-#include "network.hpp"
+#include "network_interface.hpp"
 
 #ifndef SURF_ROUTING_CLUSTER_HPP_
 #define SURF_ROUTING_CLUSTER_HPP_
@@ -33,7 +33,7 @@ public:
   int parsePU(RoutingEdgePtr elm); /* A host or a router, whatever */
   int parseAS(RoutingEdgePtr elm);
 
-  NetworkCm02LinkPtr p_backbone;
+  NetworkLinkPtr p_backbone;
   void *p_loopback;
   RoutingEdgePtr p_router;
 };
index f5f7206..9cececc 100644 (file)
@@ -5,7 +5,7 @@
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
 #include "surf_routing_dijkstra.hpp"
-#include "network.hpp"
+#include "network_interface.hpp"
 
 /* Global vars */
 extern routing_platf_t routing_platf;
@@ -258,7 +258,7 @@ void AsDijkstra::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_p
     xbt_dynar_foreach(links, cpt, link) {
       xbt_dynar_unshift(route->link_list, &link);
       if (lat)
-        *lat += dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(link))->getLatency();
+        *lat += dynamic_cast<NetworkLinkPtr>(static_cast<ResourcePtr>(link))->getLatency();
     }
 
   }
@@ -366,7 +366,7 @@ void AsDijkstra::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_p
       xbt_dynar_foreach(links, cpt, link) {
         xbt_dynar_insert_at(route->link_list, pos, &link);
         if (lat)
-          *lat += dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(link))->getLatency();
+          *lat += dynamic_cast<NetworkLinkPtr>(static_cast<ResourcePtr>(link))->getLatency();
         pos++;
       }
     }
@@ -375,7 +375,7 @@ void AsDijkstra::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_p
     xbt_dynar_foreach(links, cpt, link) {
       xbt_dynar_unshift(route->link_list, &link);
       if (lat)
-        *lat += dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(link))->getLatency();
+        *lat += dynamic_cast<NetworkLinkPtr>(static_cast<ResourcePtr>(link))->getLatency();
     }
     size++;
   }
index 5c97ba5..9c57837 100644 (file)
@@ -5,7 +5,7 @@
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
 #include "surf_routing_floyd.hpp"
-#include "network.hpp"
+#include "network_interface.hpp"
 
 extern "C" {
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_route_floyd, surf, "Routing part of surf");
@@ -123,7 +123,7 @@ void AsFloyd::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_plat
     xbt_dynar_foreach(links, cpt, link) {
       xbt_dynar_push_as(res->link_list, sg_routing_link_t, link);
       if (lat)
-        *lat += dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(link))->getLatency();
+        *lat += dynamic_cast<NetworkLinkPtr>(static_cast<ResourcePtr>(link))->getLatency();
     }
 
     prev_dst_gw = e_route->gw_dst;
index 835583f..420f237 100644 (file)
@@ -5,7 +5,7 @@
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
 #include "surf_routing_full.hpp"
-#include "network.hpp"
+#include "network_interface.hpp"
 
 extern "C" {
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_route_full, surf, "Routing part of surf");
@@ -127,7 +127,7 @@ void AsFull::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_platf
     xbt_dynar_foreach(e_route->link_list, cpt, link) {
       xbt_dynar_push(res->link_list, &link);
       if (lat)
-        *lat += dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(link))->getLatency();
+        *lat += dynamic_cast<NetworkLinkPtr>(static_cast<ResourcePtr>(link))->getLatency();
     }
   }
 }
index 6debb30..09bda40 100644 (file)
@@ -7,7 +7,7 @@
 #include "simgrid/platf_interface.h"    // platform creation API internal interface
 
 #include "surf_routing_generic.hpp"
-#include "network.hpp"
+#include "network_interface.hpp"
 #include "xbt/graph.h"
 
 extern "C" {
@@ -323,7 +323,7 @@ sg_platf_route_cbarg_t AsGeneric::getBypassRoute(RoutingEdgePtr src,
 
   sg_platf_route_cbarg_t new_e_route = NULL;
   if (e_route_bypass) {
-    NetworkCm02LinkPtr link;
+    NetworkLinkPtr link;
     unsigned int cpt = 0;
     new_e_route = xbt_new0(s_sg_platf_route_cbarg_t, 1);
     new_e_route->gw_src = e_route_bypass->gw_src;
index 00e0552..c55d9b0 100644 (file)
@@ -1,4 +1,5 @@
 #include "surf_routing_vivaldi.hpp"
+#include "network_interface.hpp"
 
 extern "C" {
   XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_route_vivaldi, surf, "Routing part of surf");
@@ -42,7 +43,7 @@ void AsVivaldi::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl
       if(info.link_up) { // link up
         xbt_dynar_push_as(route->link_list, void*, info.link_up);
         if (lat)
-          *lat += dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(info.link_up))->getLatency();
+          *lat += dynamic_cast<NetworkLinkPtr>(static_cast<ResourcePtr>(info.link_up))->getLatency();
       }
     }
     src_ctn = (xbt_dynar_t) xbt_lib_get_or_null(host_lib, tmp_src_name, COORD_HOST_LEVEL);
@@ -64,7 +65,7 @@ void AsVivaldi::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl
       if(info.link_down) { // link down
         xbt_dynar_push_as(route->link_list,void*,info.link_down);
         if (lat)
-          *lat += dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(info.link_down))->getLatency();
+          *lat += dynamic_cast<NetworkLinkPtr>(static_cast<ResourcePtr>(info.link_down))->getLatency();
       }
     }
     dst_ctn = (xbt_dynar_t) xbt_lib_get_or_null(host_lib, tmp_dst_name, COORD_HOST_LEVEL);
index c71cb00..a40350e 100644 (file)
@@ -1,5 +1,4 @@
 #include "surf_routing_generic.hpp"
-#include "network.hpp"
 
 #ifndef SURF_ROUTING_VIVALDI_HPP_
 #define SURF_ROUTING_VIVALDI_HPP_
index 568f60c..f70781b 100644 (file)
@@ -1,7 +1,7 @@
 #include "surf.hpp"
 #include "storage.hpp"
-#include "cpu.hpp"
-#include "network.hpp"
+#include "cpu_interface.hpp"
+#include "network_interface.hpp"
 
 #ifndef WORKSTATION_HPP_
 #define WORKSTATION_HPP_
@@ -100,7 +100,7 @@ public:
   xbt_dynar_t p_storage;
   RoutingEdgePtr p_netElm;
   CpuPtr p_cpu;
-  NetworkCm02LinkPtr p_network;
+  NetworkLinkPtr p_network;
 
   xbt_dynar_t getVms();
 
index 383ff77..926990f 100644 (file)
@@ -5,7 +5,7 @@
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
 #include "workstation_ptask_L07.hpp"
-#include "cpu.hpp"
+#include "cpu_interface.hpp"
 #include "surf_routing.hpp"
 
 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(surf_workstation);
@@ -20,11 +20,11 @@ WorkstationL07Model::WorkstationL07Model() : WorkstationModel("Workstation ptask
   surf_workstation_model = NULL;
   surf_network_model = new NetworkL07Model();
   surf_cpu_model_pm = new CpuL07Model();
-  routing_model_create(p_networkModel->createResource("__loopback__",
+  routing_model_create(static_cast<ResourcePtr>(surf_network_model->createResource("__loopback__",
                                                          498000000, NULL,
                                                          0.000015, NULL,
                                                          SURF_RESOURCE_ON, NULL,
-                                                         SURF_LINK_FATPIPE, NULL));
+                                                         SURF_LINK_FATPIPE, NULL)));
   p_cpuModel = surf_cpu_model_pm;
 }
 
@@ -328,7 +328,7 @@ ResourcePtr CpuL07Model::createResource(const char *name, double power_scale,
   return cpu;//FIXME:xbt_lib_get_elm_or_null(host_lib, name);
 }
 
-ResourcePtr NetworkL07Model::createResource(const char *name,
+NetworkLinkPtr NetworkL07Model::createResource(const char *name,
                                  double bw_initial,
                                  tmgr_trace_t bw_trace,
                                  double lat_initial,
@@ -475,7 +475,7 @@ CpuL07::CpuL07(CpuL07ModelPtr model, const char* name, xbt_dict_t props)
 }
 
 LinkL07::LinkL07(NetworkL07ModelPtr model, const char* name, xbt_dict_t props)
- : Resource(model, name, props), NetworkCm02LinkLmm(model, name, props) {
+ : Resource(model, name, props), NetworkLinkLmm() {
 
 }
 
index 19ca986..eef274c 100644 (file)
@@ -56,7 +56,7 @@ public:
   xbt_dynar_t getRoute(WorkstationCLM03Ptr src, WorkstationCLM03Ptr dst);
   ActionPtr communicate(WorkstationCLM03Ptr src, WorkstationCLM03Ptr dst, double size, double rate);
   void addTraces();
-  NetworkL07ModelPtr p_networkModel;
+  NetworkModelPtr p_networkModel;
 };
 
 class CpuL07Model : public CpuModel {
@@ -74,11 +74,11 @@ public:
   WorkstationL07ModelPtr p_workstationModel;
 };
 
-class NetworkL07Model : public NetworkCm02Model {
+class NetworkL07Model : public NetworkModel {
 public:
-  NetworkL07Model() : NetworkCm02Model(0) {};
+  NetworkL07Model() : NetworkModel() {};
   ~NetworkL07Model() {surf_network_model = NULL;};
-  ResourcePtr createResource(const char *name,
+  NetworkLinkPtr createResource(const char *name,
                                                   double bw_initial,
                                                   tmgr_trace_t bw_trace,
                                                   double lat_initial,
@@ -135,7 +135,7 @@ public:
   double m_powerCurrent;
 };
 
-class LinkL07 : public NetworkCm02LinkLmm {
+class LinkL07 : public NetworkLinkLmm {
 public:
   LinkL07(NetworkL07ModelPtr model, const char* name, xbt_dict_t props);
   ~LinkL07(){