Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Surf: factorize resource sets into common_public
authormquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Tue, 30 Jun 2009 20:59:56 +0000 (20:59 +0000)
committermquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Tue, 30 Jun 2009 20:59:56 +0000 (20:59 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@6404 48e7efb5-ca39-0410-a469-dd3cf9ba447f

16 files changed:
ChangeLog
src/include/surf/surf.h
src/simdag/sd_global.c
src/simix/smx_environment.c
src/surf/cpu.c
src/surf/cpu_private.h
src/surf/model.c
src/surf/network.c
src/surf/network_common.h
src/surf/network_constant.c
src/surf/network_gtnets.c
src/surf/network_gtnets_private.h
src/surf/surf_timer.c
src/surf/surfxml_parse.c
src/surf/workstation.c
src/surf/workstation_ptask_L07.c

index c5f906d..0e35379 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,9 +4,13 @@ SimGrid (3.3.2-svn) unstable; urgency=low
   * Implement MPI_Waitany and MPI_Waitall 
 
  SURF: 
-  * Factorize model_init/exit between models
   * Declare common_public as an embeeded struct to reduce redirections
     and mallocs
+  * Factorize model_init/exit between models
+  * Factorize the set of resources within common_public;
+   + change model->common_model->resource_name() 
+     into surf_model_resource_by_name(model)
+   (less redirections, less function to write when defining a model)
 
  XBT:
   * Add xbt_set_get_by_name_or_null() [Silas De Munck]
index 9ea2ec2..87f478c 100644 (file)
@@ -126,8 +126,6 @@ XBT_PUBLIC(int) find_model_description(s_surf_model_description_t * table,
      typedef struct surf_model_public {
        s_surf_action_state_t states;
                                 /**< Any living action on this model */
-       void *(*name_service) (const char *name);
-                                            /**< Return a model given its name */
        const char *(*get_resource_name) (void *resource_id);
                                                         /**< Return the name of a resource */
 
@@ -164,6 +162,7 @@ XBT_PUBLIC(int) find_model_description(s_surf_model_description_t * table,
                                                     /**< Return the properties dictionary */
        const char *name;
                     /**< Name of this model */
+       xbt_dict_t resource_set;
      } s_surf_model_public_t, *surf_model_public_t;
 
 /** \brief Private data available on all models
@@ -183,6 +182,8 @@ XBT_PUBLIC(int) find_model_description(s_surf_model_description_t * table,
      } s_surf_model_t;
 
      void surf_model_init(surf_model_t model);
+     void* surf_model_resource_by_name(void* model, const char *name);
+#define surf_model_resource_set(model) (model)->common_public.resource_set
      void surf_model_exit(surf_model_t model);
 
 
@@ -553,8 +554,8 @@ XBT_PUBLIC_DATA(xbt_dict_t) link_set;
  *
  *  \see link_set
  */
-XBT_PUBLIC_DATA(xbt_dict_t) workstation_set;
-XBT_PUBLIC_DATA(xbt_dict_t) cpu_set;
+/*XBT_PUBLIC_DATA(xbt_dict_t) workstation_set; //KILLME
+XBT_PUBLIC_DATA(xbt_dict_t) cpu_set; //KILLME*/
 /** \brief List of initialized models
  *  \ingroup SURF_models
  */
index 4a3f62f..28a4d23 100644 (file)
@@ -162,7 +162,7 @@ void SD_create_environment(const char *platform_file)
   parse_platform_file(platform_file);
 
   /* now let's create the SD wrappers for workstations and links */
-  xbt_dict_foreach(workstation_set, cursor, name, surf_workstation) {
+  xbt_dict_foreach(surf_model_resource_set(surf_workstation_model), cursor, name, surf_workstation) {
     __SD_workstation_create(surf_workstation, NULL);
   }
 
index 979958d..4b1bde0 100644 (file)
@@ -49,7 +49,7 @@ void SIMIX_create_environment(const char *file)
   end = xbt_os_time();
   DEBUG1("PARSE TIME: %lg", (end - start));
 
-  xbt_dict_foreach(workstation_set, cursor, name, workstation) {
+  xbt_dict_foreach(surf_model_resource_set(surf_workstation_model), cursor, name, workstation) {
          __SIMIX_host_create(name, workstation, NULL);
   }
 
index 17663c5..581700d 100644 (file)
@@ -13,7 +13,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_cpu, surf,
 surf_cpu_model_t surf_cpu_model = NULL;
 lmm_system_t cpu_maxmin_system = NULL;
 
-xbt_dict_t cpu_set = NULL;
+
 static xbt_swag_t running_action_set_that_does_not_need_being_checked = NULL;
 
 static void cpu_free(void *cpu)
@@ -31,7 +31,7 @@ static cpu_Cas01_t cpu_new(char *name, double power_scale,
                            xbt_dict_t cpu_properties)
 {
   cpu_Cas01_t cpu = xbt_new0(s_cpu_Cas01_t, 1);
-  xbt_assert1(!xbt_dict_get_or_null(cpu_set, name),
+  xbt_assert1(!surf_model_resource_by_name(surf_cpu_model, name),
               "Host '%s' declared several times in the platform file", name);
   cpu->model = (surf_model_t) surf_cpu_model;
   cpu->name = name;
@@ -56,7 +56,7 @@ static cpu_Cas01_t cpu_new(char *name, double power_scale,
 
   current_property_set = cpu_properties;
 
-  xbt_dict_set(cpu_set, name, cpu, cpu_free);
+  xbt_dict_set(surf_model_resource_set(surf_cpu_model), name, cpu, cpu_free);
 
   return cpu;
 }
@@ -104,7 +104,7 @@ static void add_traces_cpu(void)
   /* connect all traces relative to hosts */
   xbt_dict_foreach(trace_connect_list_host_avail, cursor, trace_name, elm) {
     tmgr_trace_t trace = xbt_dict_get_or_null(traces_set_list, trace_name);
-    cpu_Cas01_t host = xbt_dict_get_or_null(cpu_set, elm);
+    cpu_Cas01_t host = surf_model_resource_by_name((surf_model_t)surf_cpu_model, elm);
 
     xbt_assert1(host, "Host %s undefined", elm);
     xbt_assert1(trace, "Trace %s undefined", trace_name);
@@ -114,7 +114,7 @@ static void add_traces_cpu(void)
 
   xbt_dict_foreach(trace_connect_list_power, cursor, trace_name, elm) {
     tmgr_trace_t trace = xbt_dict_get_or_null(traces_set_list, trace_name);
-    cpu_Cas01_t host = xbt_dict_get_or_null(cpu_set, elm);
+    cpu_Cas01_t host = surf_model_resource_by_name((surf_model_t)surf_cpu_model, elm);
 
     xbt_assert1(host, "Host %s undefined", elm);
     xbt_assert1(trace, "Trace %s undefined", trace_name);
@@ -129,11 +129,6 @@ static void define_callbacks(const char *file)
   surfxml_add_callback(STag_surfxml_host_cb_list, parse_cpu_init);
 }
 
-static void *name_service(const char *name)
-{
-  return xbt_dict_get_or_null(cpu_set, name);
-}
-
 static const char *get_resource_name(void *resource_id)
 {
   return ((cpu_Cas01_t) resource_id)->name;
@@ -392,7 +387,6 @@ static xbt_dict_t get_properties(void *cpu)
 
 static void finalize(void)
 {
-  xbt_dict_free(&cpu_set);
   lmm_system_free(cpu_maxmin_system);
   cpu_maxmin_system = NULL;
 
@@ -420,7 +414,6 @@ static void surf_cpu_model_init_internal(void)
   running_action_set_that_does_not_need_being_checked =
     xbt_swag_new(xbt_swag_offset(action, state_hookup));
 
-  surf_cpu_model->common_public.name_service = name_service;
   surf_cpu_model->common_public.get_resource_name = get_resource_name;
   surf_cpu_model->common_public.action_get_state = surf_action_get_state;
   surf_cpu_model->common_public.action_get_start_time =
@@ -455,8 +448,6 @@ static void surf_cpu_model_init_internal(void)
   /*manage the properties of the cpu */
   surf_cpu_model->common_public.get_properties = get_properties;
 
-  if (!cpu_set)
-    cpu_set = xbt_dict_new();
   if (!cpu_maxmin_system)
     cpu_maxmin_system = lmm_system_new();
 }
index b81db85..bd5c618 100644 (file)
@@ -31,6 +31,4 @@ typedef struct cpu_Cas01 {
   xbt_dict_t properties;
 } s_cpu_Cas01_t, *cpu_Cas01_t;
 
-extern xbt_dict_t cpu_set;
-
 #endif /* _SURF_CPU_PRIVATE_H */
index 397dd45..94b30f5 100644 (file)
@@ -5,6 +5,7 @@
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
 #include "surf_private.h"
+#include "xbt/dict.h"
 
 static void void_die_impossible_paction(surf_action_t action) {
        DIE_IMPOSSIBLE;
@@ -28,6 +29,7 @@ void surf_model_init(surf_model_t model) {
            xbt_swag_new(xbt_swag_offset(action, state_hookup));
          model->common_public.states.done_action_set =
            xbt_swag_new(xbt_swag_offset(action, state_hookup));
+         model->common_public.resource_set = xbt_dict_new();
 
          model->common_public.action_free = int_die_impossible_paction;
          model->common_public.action_cancel = void_die_impossible_paction;
@@ -35,6 +37,10 @@ void surf_model_init(surf_model_t model) {
 
 }
 
+void* surf_model_resource_by_name(void* model, const char *name) {
+       return xbt_dict_get_or_null(((surf_model_t)model)->common_public.resource_set,name);
+}
+
 
 /** @brief finalize common datastructures to all models */
 void surf_model_exit(surf_model_t model) {
@@ -42,5 +48,6 @@ void surf_model_exit(surf_model_t model) {
          xbt_swag_free(model->common_public.states.running_action_set);
          xbt_swag_free(model->common_public.states.failed_action_set);
          xbt_swag_free(model->common_public.states.done_action_set);
+         xbt_dict_free(&model->common_public.resource_set);
          free(model->common_private);
 }
index 4856e95..87e462e 100644 (file)
@@ -16,7 +16,6 @@ surf_network_model_t surf_network_model = NULL;
 static lmm_system_t network_maxmin_system = NULL;
 static void (*network_solve) (lmm_system_t) = NULL;
 xbt_dict_t link_set = NULL;
-xbt_dict_t network_card_set = NULL;
 
 double latency_factor = 1.0;    /* default value */
 double bandwidth_factor = 1.0;  /* default value */
@@ -100,13 +99,13 @@ static void network_card_free(void *nw_card)
 static int network_card_new(const char *card_name)
 {
   network_card_CM02_t card =
-    xbt_dict_get_or_null(network_card_set, card_name);
+         surf_model_resource_by_name(surf_network_model,card_name);
 
   if (!card) {
     card = xbt_new0(s_network_card_CM02_t, 1);
     card->name = xbt_strdup(card_name);
     card->id = host_number++;
-    xbt_dict_set(network_card_set, card_name, card, network_card_free);
+    xbt_dict_set(surf_model_resource_set(surf_network_model), card_name, card, network_card_free);
   }
   return card->id;
 }
@@ -301,12 +300,6 @@ static void define_callbacks(const char *file)
   surfxml_add_callback(ETag_surfxml_platform_cb_list, &add_loopback);
 }
 
-static void *name_service(const char *name)
-{
-  network_card_CM02_t card = xbt_dict_get_or_null(network_card_set, name);
-  return card;
-}
-
 static const char *get_resource_name(void *resource_id)
 {
   return ((network_card_CM02_t) resource_id)->name;
@@ -680,7 +673,6 @@ static void finalize(void)
 {
   int i, j;
 
-  xbt_dict_free(&network_card_set);
   xbt_dict_free(&link_set);
 
   surf_model_exit((surf_model_t)surf_network_model);
@@ -711,7 +703,6 @@ static void surf_network_model_init_internal(void)
   surf_network_model->extension_public =
     xbt_new0(s_surf_network_model_extension_public_t, 1);
 
-  surf_network_model->common_public.name_service = name_service;
   surf_network_model->common_public.get_resource_name = get_resource_name;
   surf_network_model->common_public.action_get_state = surf_action_get_state;
   surf_network_model->common_public.action_get_start_time =
@@ -752,7 +743,6 @@ static void surf_network_model_init_internal(void)
   surf_network_model->common_public.get_properties = get_properties;
 
   link_set = xbt_dict_new();
-  network_card_set = xbt_dict_new();
 
   if (!network_maxmin_system)
     network_maxmin_system = lmm_system_new();
index 2bfb882..9fcf31c 100644 (file)
@@ -8,9 +8,6 @@
 #ifndef _SURF_NETWORK_COMMON_H
 #define _SURF_NETWORK_COMMON_H
 
-#include "xbt/dict.h"
-
-extern xbt_dict_t network_card_set;
 
 
 #endif /* _SURF_NETWORK_COMMON_H */
index 557e94a..8ac0021 100644 (file)
@@ -40,13 +40,13 @@ static void network_card_free(void *nw_card)
 static int network_card_new(const char *card_name)
 {
   network_card_Constant_t card =
-    xbt_dict_get_or_null(network_card_set, card_name);
+         surf_model_resource_by_name(surf_network_model,card_name);
 
   if (!card) {
     card = xbt_new0(s_network_card_Constant_t, 1);
     card->name = xbt_strdup(card_name);
     card->id = card_number++;
-    xbt_dict_set(network_card_set, card_name, card, network_card_free);
+    xbt_dict_set(surf_model_resource_set(surf_network_model), card_name, card, network_card_free);
   }
   return card->id;
 }
@@ -85,12 +85,6 @@ static void define_callbacks(const char *file)
   surfxml_add_callback(ETag_surfxml_route_cb_list, &parse_route_set_route);
 }
 
-static void *name_service(const char *name)
-{
-  network_card_Constant_t card = xbt_dict_get_or_null(network_card_set, name);
-  return card;
-}
-
 static const char *get_resource_name(void *resource_id)
 {
   return ((network_card_Constant_t) resource_id)->name;
@@ -292,8 +286,6 @@ static void action_set_max_duration(surf_action_t action, double duration)
 
 static void finalize(void)
 {
-  xbt_dict_free(&network_card_set);
-
   surf_model_exit((surf_model_t)surf_network_model);
 
   free(surf_network_model->extension_public);
@@ -313,7 +305,6 @@ static void surf_network_model_init_internal(void)
   surf_network_model->extension_public =
     xbt_new0(s_surf_network_model_extension_public_t, 1);
 
-  surf_network_model->common_public.name_service = name_service;
   surf_network_model->common_public.get_resource_name = get_resource_name;
   surf_network_model->common_public.action_get_state = surf_action_get_state;
   surf_network_model->common_public.action_get_start_time =
@@ -353,8 +344,6 @@ static void surf_network_model_init_internal(void)
 
   surf_network_model->common_public.get_properties = get_properties;
 
-  network_card_set = xbt_dict_new();
-
   if (!random_latency)
     random_latency = random_new(RAND, 100, 0.0, 1.0, .125, .034);
 }
index 2c747b2..32a30ba 100644 (file)
@@ -103,7 +103,7 @@ static int network_card_new(const char *name)
 
   XBT_IN1("(%s)", name);
   /* KF: Check that we haven't seen the network card before */
-  network_card_GTNETS_t card = xbt_dict_get_or_null(network_card_set, name);
+  network_card_GTNETS_t card = surf_model_resource_by_name(surf_network_model, name);
 
   if (!card) {
     /* KF: Increment the card counter for GTNetS */
@@ -113,7 +113,7 @@ static int network_card_new(const char *name)
     card = xbt_new0(s_network_card_GTNETS_t, 1);
     card->name = xbt_strdup(name);
     card->id = card_count;
-    xbt_dict_set(network_card_set, name, card, network_card_free);
+    xbt_dict_set(surf_model_resource_set(surf_network_model), name, card, network_card_free);
   }
 
   LOG1(xbt_log_priority_trace, "   return %d", card->id);
@@ -307,11 +307,6 @@ static void define_callbacks(const char *file)
   surfxml_add_callback(ETag_surfxml_platform_cb_list, &add_route);
 }
 
-static void *name_service(const char *name)
-{
-  return xbt_dict_get_or_null(network_card_set, name);
-}
-
 static const char *get_resource_name(void *resource_id)
 {
   return ((network_card_GTNETS_t) resource_id)->name;
@@ -531,7 +526,6 @@ static int action_is_suspended(surf_action_t action)
 
 static void finalize(void)
 {
-  xbt_dict_free(&network_card_set);
   xbt_dict_free(&link_set);
 
   surf_model_exit((surf_model_t)surf_network_model);
@@ -585,7 +579,6 @@ static void surf_network_model_init_internal(void)
   surf_network_model->common_public.get_properties = get_properties;
 
   link_set = xbt_dict_new();
-  network_card_set = xbt_dict_new();
 
   /* KF: Added the initialization for GTNetS interface */
   if (gtnets_initialize()) {
index 6f76717..7929eb3 100644 (file)
@@ -43,7 +43,7 @@ typedef struct surf_action_network_GTNETS {
   network_card_GTNETS_t dst;
 } s_surf_action_network_GTNETS_t, *surf_action_network_GTNETS_t;
 
-extern xbt_dict_t network_card_set;
+//extern xbt_dict_t network_card_set;
 
 
 #endif /* _SURF_NETWORK_PRIVATE_H */
index 7e70ea8..125168a 100644 (file)
@@ -53,12 +53,6 @@ static void parse_file(const char *file)
 {
 }
 
-static void *name_service(const char *name)
-{
-  DIE_IMPOSSIBLE;
-  return NULL;
-}
-
 static const char *get_resource_name(void *resource_id)
 {
   DIE_IMPOSSIBLE;
@@ -177,7 +171,6 @@ static void surf_timer_model_init_internal(void)
   surf_timer_model->extension_public =
     xbt_new0(s_surf_timer_model_extension_public_t, 1);
 
-  surf_timer_model->common_public.name_service = name_service;
   surf_timer_model->common_public.get_resource_name = get_resource_name;
   surf_timer_model->common_public.action_get_state = surf_action_get_state;
   surf_timer_model->common_public.action_change_state = action_change_state;
index 7bac0d6..d0495ae 100644 (file)
@@ -1031,10 +1031,12 @@ static void convert_route_multi_to_routes(void)
   if (!route_multi_elements)
     return;
 
-  set = cpu_set;
-  DEBUG1("%d", xbt_dict_length(workstation_set));
-  if (workstation_set != NULL && xbt_dict_length(workstation_set) > 0)
-    set = workstation_set;
+  if (surf_cpu_model)
+         set = surf_model_resource_set(surf_cpu_model);
+  if (surf_workstation_model != NULL &&
+                 surf_model_resource_set(surf_workstation_model) != NULL &&
+                 xbt_dict_length(surf_model_resource_set(surf_workstation_model)) > 0)
+    set = surf_model_resource_set(surf_workstation_model);
 
 
   push_surfxml_bufferstack(0);
index 33d8943..c8c397a 100644 (file)
@@ -16,7 +16,12 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_workstation, surf,
                                 "Logging specific to the SURF workstation module");
 
 surf_workstation_model_t surf_workstation_model = NULL;
-xbt_dict_t workstation_set = NULL;
+
+static void workstation_free(void *workstation)
+{
+  free(((workstation_CLM03_t) workstation)->name);
+  free(workstation);
+}
 
 static workstation_CLM03_t workstation_new(const char *name,
                                            void *cpu, void *card)
@@ -28,13 +33,9 @@ static workstation_CLM03_t workstation_new(const char *name,
   workstation->cpu = cpu;
   workstation->network_card = card;
 
-  return workstation;
-}
+  xbt_dict_set(surf_model_resource_set(surf_workstation_model),name,workstation,workstation_free);
 
-static void workstation_free(void *workstation)
-{
-  free(((workstation_CLM03_t) workstation)->name);
-  free(workstation);
+  return workstation;
 }
 
 void create_workstations(void)
@@ -44,20 +45,14 @@ void create_workstations(void)
   void *cpu = NULL;
   void *nw_card = NULL;
 
-  xbt_dict_foreach(cpu_set, cursor, name, cpu) {
-    nw_card = xbt_dict_get_or_null(network_card_set, name);
+  xbt_dict_foreach(surf_model_resource_set(surf_cpu_model), cursor, name, cpu) {
+       nw_card = surf_model_resource_by_name(surf_network_model, name);
     xbt_assert1(nw_card, "No corresponding card found for %s", name);
 
-    xbt_dict_set(workstation_set, name,
-                 workstation_new(name, cpu, nw_card), workstation_free);
+    workstation_new(name,cpu,nw_card);
   }
 }
 
-static void *name_service(const char *name)
-{
-  return xbt_dict_get_or_null(workstation_set, name);
-}
-
 static const char *get_resource_name(void *resource_id)
 {
   return ((workstation_CLM03_t) resource_id)->name;
@@ -304,8 +299,6 @@ static int link_shared(const void *link)
 
 static void finalize(void)
 {
-  xbt_dict_free(&workstation_set);
-
   surf_model_exit((surf_model_t)surf_workstation_model);
 
   free(surf_workstation_model->extension_public);
@@ -323,7 +316,6 @@ static void surf_workstation_model_init_internal(void)
   surf_workstation_model->extension_public =
     xbt_new0(s_surf_workstation_model_extension_public_t, 1);
 
-  surf_workstation_model->common_public.name_service = name_service;
   surf_workstation_model->common_public.get_resource_name =
     get_resource_name;
   surf_workstation_model->common_public.action_get_state =
@@ -377,8 +369,6 @@ static void surf_workstation_model_init_internal(void)
   surf_workstation_model->extension_public->get_link_latency =
     get_link_latency;
   surf_workstation_model->extension_public->link_shared = link_shared;
-
-  workstation_set = xbt_dict_new();
 }
 
 /********************************************************************/
index 063d56e..971e1b6 100644 (file)
@@ -9,7 +9,6 @@
 #include "xbt/str.h"
 #include "xbt/dict.h"
 #include "surf_private.h"
-/* extern lmm_system_t maxmin_system; */
 
 typedef enum {
   SURF_WORKSTATION_RESOURCE_CPU,
@@ -124,11 +123,6 @@ static void update_action_bound(surf_action_workstation_L07_t action)
 /******* Resource Public     **********/
 /**************************************/
 
-static void *name_service(const char *name)
-{
-  return xbt_dict_get_or_null(workstation_set, name);
-}
-
 static const char *get_resource_name(void *resource_id)
 {
   /* We can freely cast as a cpu_L07_t because it has the same
@@ -419,7 +413,6 @@ static void finalize(void)
   int i, j;
 
   xbt_dict_free(&link_set);
-  xbt_dict_free(&workstation_set);
   if (parallel_task_link_set != NULL) {
     xbt_dict_free(&parallel_task_link_set);
   }
@@ -671,7 +664,7 @@ static cpu_L07_t cpu_new(const char *name, double power_scale,
                          tmgr_trace_t state_trace, xbt_dict_t cpu_properties)
 {
   cpu_L07_t cpu = xbt_new0(s_cpu_L07_t, 1);
-  xbt_assert1(!xbt_dict_get_or_null(workstation_set, name),
+  xbt_assert1(!surf_model_resource_by_name(surf_workstation_model, name),
               "Host '%s' declared several times in the platform file.", name);
 
   cpu->model = (surf_model_t) surf_workstation_model;
@@ -699,7 +692,7 @@ static cpu_L07_t cpu_new(const char *name, double power_scale,
   /*add the property set */
   cpu->properties = current_property_set;
 
-  xbt_dict_set(workstation_set, name, cpu, cpu_free);
+  xbt_dict_set(surf_model_resource_set(surf_workstation_model), name, cpu, cpu_free);
 
   return cpu;
 }
@@ -843,12 +836,12 @@ static void parse_route_set_endpoints(void)
 {
   cpu_L07_t cpu_tmp = NULL;
 
-  cpu_tmp = (cpu_L07_t) name_service(A_surfxml_route_src);
+  cpu_tmp = (cpu_L07_t) surf_model_resource_by_name(surf_workstation_model, A_surfxml_route_src);
   xbt_assert1(cpu_tmp, "Invalid cpu %s", A_surfxml_route_src);
   if (cpu_tmp != NULL)
     src_id = cpu_tmp->id;
 
-  cpu_tmp = (cpu_L07_t) name_service(A_surfxml_route_dst);
+  cpu_tmp = (cpu_L07_t) surf_model_resource_by_name(surf_workstation_model, A_surfxml_route_dst);
   xbt_assert1(cpu_tmp, "Invalid cpu %s", A_surfxml_route_dst);
   if (cpu_tmp != NULL)
     dst_id = cpu_tmp->id;
@@ -936,7 +929,7 @@ static void add_traces(void)
   /* Connect traces relative to cpu */
   xbt_dict_foreach(trace_connect_list_host_avail, cursor, trace_name, elm) {
     tmgr_trace_t trace = xbt_dict_get_or_null(traces_set_list, trace_name);
-    cpu_L07_t host = xbt_dict_get_or_null(workstation_set, elm);
+    cpu_L07_t host = surf_model_resource_by_name(surf_workstation_model, elm);
 
     xbt_assert1(host, "Host %s undefined", elm);
     xbt_assert1(trace, "Trace %s undefined", trace_name);
@@ -946,7 +939,7 @@ static void add_traces(void)
 
   xbt_dict_foreach(trace_connect_list_power, cursor, trace_name, elm) {
     tmgr_trace_t trace = xbt_dict_get_or_null(traces_set_list, trace_name);
-    cpu_L07_t host = xbt_dict_get_or_null(workstation_set, elm);
+    cpu_L07_t host = surf_model_resource_by_name(surf_workstation_model, elm);
 
     xbt_assert1(host, "Host %s undefined", elm);
     xbt_assert1(trace, "Trace %s undefined", trace_name);
@@ -984,34 +977,6 @@ static void add_traces(void)
 
     link->lat_event = tmgr_history_add_trace(history, trace, 0.0, 0, link);
   }
-/*
-
-   xbt_dynar_foreach (traces_connect_list, cpt, value) {
-     trace_connect = xbt_str_split_str(value, "#");
-     trace_id        = xbt_dynar_get_as(trace_connect, 0, char*);
-     connect_element = atoi(xbt_dynar_get_as(trace_connect, 1, char*));
-     connect_kind    = atoi(xbt_dynar_get_as(trace_connect, 2, char*));
-     connector_id    = xbt_dynar_get_as(trace_connect, 3, char*);
-
-     xbt_assert1((trace = xbt_dict_get_or_null(traces_set_list, trace_id)), "Trace %s undefined", trace_id);
-
-     if (connect_element == A_surfxml_trace_c_connect_element_HOST) {
-        xbt_assert1((host = xbt_dict_get_or_null(workstation_set, connector_id)), "Host %s undefined", connector_id);
-        switch (connect_kind) {
-           case A_surfxml_trace_c_connect_kind_AVAILABILITY: host->state_event = tmgr_history_add_trace(history, trace, 0.0, 0, host); break;
-           case A_surfxml_trace_c_connect_kind_POWER: host->power_event = tmgr_history_add_trace(history, trace, 0.0, 0, host); break;
-        }
-     }
-     else {
-        xbt_assert1((link = xbt_dict_get_or_null(link_set, connector_id)), "Link %s undefined", connector_id);
-        switch (connect_kind) {
-           case A_surfxml_trace_c_connect_kind_AVAILABILITY: link->state_event = tmgr_history_add_trace(history, trace, 0.0, 0, link); break;
-           case A_surfxml_trace_c_connect_kind_BANDWIDTH: link->bw_event = tmgr_history_add_trace(history, trace, 0.0, 0, link); break;
-           case A_surfxml_trace_c_connect_kind_LATENCY: link->lat_event = tmgr_history_add_trace(history, trace, 0.0, 0, link); break;
-        }
-     }
-   }
-*/
 }
 
 static void define_callbacks(const char *file)
@@ -1041,7 +1006,6 @@ static void model_init_internal(void)
   surf_workstation_model->extension_public =
     xbt_new0(s_surf_workstation_model_extension_public_t, 1);
 
-  surf_workstation_model->common_public.name_service = name_service;
   surf_workstation_model->common_public.get_resource_name =
     get_resource_name;
   surf_workstation_model->common_public.action_get_state =
@@ -1093,7 +1057,6 @@ static void model_init_internal(void)
 
   surf_workstation_model->common_public.get_properties = get_properties;
 
-  workstation_set = xbt_dict_new();
   link_set = xbt_dict_new();
 
   if (!ptask_maxmin_system)