From afa112ad45dec1a7c2becaa0d6e13b1c039d4696 Mon Sep 17 00:00:00 2001 From: schnorr Date: Tue, 5 Oct 2010 13:16:06 +0000 Subject: [PATCH] registering the source and destination of all onelink routes git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@8349 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- src/instr/interface.c | 2 ++ src/instr/private.h | 1 + src/instr/surf_instr.c | 26 ++++++++++++++++++++++++++ src/simix/smx_environment.c | 4 ++++ 4 files changed, 33 insertions(+) diff --git a/src/instr/interface.c b/src/instr/interface.c index d8f0bf885a..3f998aaf4c 100644 --- a/src/instr/interface.c +++ b/src/instr/interface.c @@ -53,6 +53,8 @@ int TRACE_start () pajeDefineVariableType ("power", "HOST", "power"); pajeDefineVariableType ("bandwidth", "LINK", "bandwidth"); pajeDefineVariableType ("latency", "LINK", "latency"); + pajeDefineEventType ("source", "LINK", "source"); + pajeDefineEventType ("destination", "LINK", "destination"); } if (IS_TRACING_PROCESSES || IS_TRACING_VOLUME){ diff --git a/src/instr/private.h b/src/instr/private.h index 3ca43f5bbe..d05ef5f346 100644 --- a/src/instr/private.h +++ b/src/instr/private.h @@ -111,6 +111,7 @@ void TRACE_surf_link_set_bandwidth (double date, void *link, double bandwidth); void TRACE_surf_link_set_latency (double date, void *link, double latency); void TRACE_surf_link_missing (void); void TRACE_msg_clean (void); +void TRACE_surf_save_onelink (void); //for tracing gtnets void TRACE_surf_gtnets_communicate (void *action, int src, int dst); diff --git a/src/instr/surf_instr.c b/src/instr/surf_instr.c index 29dd9f5b69..cb8cd7daa5 100644 --- a/src/instr/surf_instr.c +++ b/src/instr/surf_instr.c @@ -5,6 +5,7 @@ * under the terms of the license (GNU LGPL) which comes with this package. */ #include "instr/private.h" +#include "surf/surf_private.h" #ifdef HAVE_TRACING @@ -199,4 +200,29 @@ void TRACE_surf_host_vivaldi_parse (char *host, double x, double y, double h) pajeSetVariable (0, "vivaldi_h", host, valuestr); } +extern routing_global_t global_routing; +void TRACE_surf_save_onelink (void) +{ + if (!IS_TRACING) return; + + //get the onelinks from the parsed platform + xbt_dynar_t onelink_routes = global_routing->get_onelink_routes(); + if (!onelink_routes) return; + + //save them in trace file + onelink_t onelink; + unsigned int iter; + xbt_dynar_foreach(onelink_routes, iter, onelink) { + char *src = onelink->src; + char *dst = onelink->dst; + void *link = onelink->link_ptr; + + char resource[100]; + snprintf (resource, 100, "%p", link); + + pajeNewEvent (0.1, "source", resource, src); + pajeNewEvent (0.1, "destination", resource, dst); + } +} + #endif diff --git a/src/simix/smx_environment.c b/src/simix/smx_environment.c index dd51dd0914..982188a9c6 100644 --- a/src/simix/smx_environment.c +++ b/src/simix/smx_environment.c @@ -46,6 +46,10 @@ void SIMIX_create_environment(const char *file) end = xbt_os_time(); DEBUG1("PARSE TIME: %lg", (end - start)); +#ifdef HAVE_TRACING + TRACE_surf_save_onelink (); +#endif + xbt_dict_foreach(surf_model_resource_set(surf_workstation_model), cursor, name, workstation) { __SIMIX_host_create(name, workstation, NULL); -- 2.20.1