X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d5b39515958bde9d7724def570d766d62ad55d86..db9bb6fbdfaff4b3e37b928582aa4db0781a6534:/src/instr/surf_instr.c diff --git a/src/instr/surf_instr.c b/src/instr/surf_instr.c index b6ae112b07..bc8913145a 100644 --- a/src/instr/surf_instr.c +++ b/src/instr/surf_instr.c @@ -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