From: schnorr Date: Tue, 13 Apr 2010 14:00:11 +0000 (+0000) Subject: properly closing host containers on simulation trace file X-Git-Tag: SVN~193 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/27ab0589420bc5bb6d52e5fdc54bab36c63b8be0 properly closing host containers on simulation trace file details: - this fix the end time of trace files git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@7548 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/src/instr/interface.c b/src/instr/interface.c index 1c5cf1a106..6e13062770 100644 --- a/src/instr/interface.c +++ b/src/instr/interface.c @@ -105,7 +105,6 @@ int TRACE_start_with_mask(const char *filename, int mask) { int TRACE_end() { if (!IS_TRACING) return 1; - __TRACE_surf_finalize(); FILE *file = TRACE_paje_end(); fclose (file); return 0; diff --git a/src/instr/private.h b/src/instr/private.h index f79dca7965..d537b55258 100644 --- a/src/instr/private.h +++ b/src/instr/private.h @@ -117,6 +117,8 @@ void TRACE_surf_link_set_latency (double date, char *resource, double latency); void TRACE_surf_routing_full_parse_end (char *link_name, int src, int dst); void TRACE_surf_missing_link (void); void TRACE_surf_define_host_id (const char *name, int host_id); +void TRACE_msg_clean (void); + //for tracing gtnets void TRACE_surf_gtnets_communicate (void *action, int src, int dst); int TRACE_surf_gtnets_get_src (void *action); diff --git a/src/instr/surf_instr.c b/src/instr/surf_instr.c index d1e9b310ef..0660513173 100644 --- a/src/instr/surf_instr.c +++ b/src/instr/surf_instr.c @@ -22,6 +22,7 @@ static xbt_dict_t hosts_id; static xbt_dict_t created_links; static xbt_dict_t link_bandwidth; static xbt_dict_t link_latency; +static xbt_dict_t host_containers; //static xbt_dict_t platform_variable_last_value; /* to control the amount of add/sub variables events*/ //static xbt_dict_t platform_variable_last_time; /* to control the amount of add/sub variables events*/ @@ -43,6 +44,7 @@ void __TRACE_surf_init (void) link_bandwidth = xbt_dict_new(); link_latency = xbt_dict_new(); platform_variables = xbt_dict_new(); + host_containers = xbt_dict_new(); //platform_variable_last_value = xbt_dict_new(); //platform_variable_last_time = xbt_dict_new(); @@ -299,7 +301,10 @@ void TRACE_surf_net_link_new (char *name, double bw, double lat) void TRACE_surf_cpu_new (char *name, double power) { if (!IS_TRACING) return; - if (IS_TRACING_PLATFORM) pajeCreateContainer (SIMIX_get_clock(), name, "HOST", "platform", name); + if (IS_TRACING_PLATFORM){ + pajeCreateContainer (SIMIX_get_clock(), name, "HOST", "platform", name); + xbt_dict_set (host_containers, xbt_strdup(name), xbt_strdup("1"), xbt_free); + } __TRACE_surf_set_resource_variable (SIMIX_get_clock(), "power", name, power); } @@ -414,4 +419,18 @@ void TRACE_surf_missing_link (void) THROW0(tracing_error, TRACE_ERROR_COMPLEX_ROUTES, "Tracing failed"); } +void TRACE_msg_clean (void) +{ + __TRACE_surf_finalize(); + + xbt_dict_cursor_t cursor = NULL; + unsigned int cursor_ar = 0; + char *key, *value; + + /* get all host from host_containers */ + xbt_dict_foreach(host_containers, cursor, key, value) { + if (IS_TRACING_PLATFORM) pajeDestroyContainer (MSG_get_clock(), "HOST", key); + } +} + #endif diff --git a/src/msg/global.c b/src/msg/global.c index 9f23a8bc6b..f49fac8e50 100644 --- a/src/msg/global.c +++ b/src/msg/global.c @@ -183,6 +183,9 @@ MSG_error_t MSG_clean(void) m_host_t h = NULL; m_process_t p = NULL; +#ifdef HAVE_TRACING + TRACE_msg_clean (); +#endif while ((p = xbt_fifo_pop(msg_global->process_list))) { MSG_process_kill(p);