Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
new variable for surf_action_t to contain its tracing category
[simgrid.git] / src / instr / surf_instr.c
index b6ae112..bc89131 100644 (file)
@@ -21,7 +21,7 @@ static xbt_dict_t resource_variables; /* (host|link)#variable -> value */
 static xbt_dict_t gtnets_src; /* %p (action) -> %s */
 static xbt_dict_t gtnets_dst; /* %p (action) -> %s */
 
-void TRACE_surf_init (void)
+void TRACE_surf_alloc (void)
 {
   created_links = xbt_dict_new();
   host_containers = xbt_dict_new();
@@ -29,15 +29,25 @@ void TRACE_surf_init (void)
   gtnets_src = xbt_dict_new ();
   gtnets_dst = xbt_dict_new ();
 
-  __TRACE_surf_resource_utilization_initialize();
+  TRACE_surf_resource_utilization_alloc();
 }
 
-void TRACE_surf_finalize (void)
+void TRACE_surf_release (void)
 {
-  __TRACE_surf_resource_utilization_finalize();
+  char *key, *value;
+  xbt_dict_cursor_t cursor = NULL;
+  TRACE_surf_resource_utilization_release();
+
+  /* get all host from host_containers */
+  xbt_dict_foreach(host_containers, cursor, key, value) {
+    pajeDestroyContainer (MSG_get_clock(), "HOST", key);
+  }
+  xbt_dict_foreach(created_links, cursor, key, value) {
+    pajeDestroyContainer (MSG_get_clock(), "LINK", key);
+  }
 }
 
-static void __TRACE_surf_set_resource_variable (double date, const char *variable, const char *resource, double value)
+static void TRACE_surf_set_resource_variable (double date, const char *variable, const char *resource, double value)
 {
        char aux[100], key[100];
        char *last_value = NULL;
@@ -68,6 +78,9 @@ void TRACE_surf_link_declaration (void *link, char *name, double bw, double lat)
 {
   if (!IS_TRACING) return;
 
+  //filter out loopback
+  if (!strcmp (name, "loopback") || !strcmp (name, "__loopback__")) return;
+
   char alias[100];
   snprintf (alias, 100, "%p", link);
   pajeCreateContainer (SIMIX_get_clock(), alias, "LINK", "platform", name);
@@ -95,7 +108,7 @@ void TRACE_surf_host_declaration (char *name, double power)
 
 void TRACE_surf_host_set_power (double date, char *resource, double power)
 {
-  __TRACE_surf_set_resource_variable (date, "power", resource, power);
+  TRACE_surf_set_resource_variable (date, "power", resource, power);
 }
 
 void TRACE_surf_link_set_bandwidth (double date, void *link, double bandwidth)
@@ -104,7 +117,7 @@ void TRACE_surf_link_set_bandwidth (double date, void *link, double bandwidth)
 
   char resource[100];
   snprintf (resource, 100, "%p", link);
-  __TRACE_surf_set_resource_variable (date, "bandwidth", resource, bandwidth);
+  TRACE_surf_set_resource_variable (date, "bandwidth", resource, bandwidth);
 }
 
 void TRACE_surf_link_set_latency (double date, void *link, double latency)
@@ -113,7 +126,7 @@ void TRACE_surf_link_set_latency (double date, void *link, double latency)
 
   char resource[100];
   snprintf (resource, 100, "%p", link);
-  __TRACE_surf_set_resource_variable (date, "latency", resource, latency);
+  TRACE_surf_set_resource_variable (date, "latency", resource, latency);
 }
 
 /* to trace gtnets */
@@ -168,29 +181,6 @@ void TRACE_surf_gtnets_destroy (void *action)
   xbt_dict_remove (gtnets_dst, key);
 }
 
-void TRACE_surf_link_missing (void)
-{
-  CRITICAL0("The trace cannot be done because "
-                "the platform you are using contains "
-                "routes with more than one link.");
-  THROW0(tracing_error, TRACE_ERROR_COMPLEX_ROUTES, "Tracing failed");
-}
-
-void TRACE_msg_clean (void)
-{
-  char *key, *value;
-  xbt_dict_cursor_t cursor = NULL;
-  TRACE_surf_finalize();
-
-  /* get all host from host_containers */
-  xbt_dict_foreach(host_containers, cursor, key, value) {
-    pajeDestroyContainer (MSG_get_clock(), "HOST", key);
-  }
-  xbt_dict_foreach(created_links, cursor, key, value) {
-    pajeDestroyContainer (MSG_get_clock(), "LINK", key);
-  }
-}
-
 void TRACE_surf_host_vivaldi_parse (char *host, double x, double y, double h)
 {
        char valuestr[100];
@@ -242,4 +232,13 @@ int TRACE_surf_link_is_traced (void *link)
   }
 }
 
+void TRACE_surf_action (surf_action_t surf_action, const char *category)
+{
+  if (!IS_TRACING_PLATFORM) return;
+  if (!category){
+    xbt_die ("invalid tracing category");
+  }
+  surf_action->category = xbt_new (char, strlen (category)+1);
+  strncpy (surf_action->category, category, strlen(category)+1);
+}
 #endif