* 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
* main: create LINK container, set initial bandwidth and latency
* return: void
*/
-void TRACE_surf_link_declaration (char *name, double bw, double lat)
+void TRACE_surf_link_declaration (void *link, char *name, double bw, double lat)
{
if (!IS_TRACING) return;
- if (strcmp (name, "__loopback__")==0 ||
- strcmp (name, "loopback")==0){ //ignore loopback updates
- return;
- }
-
- pajeCreateContainer (SIMIX_get_clock(), name, "LINK", "platform", name);
- xbt_dict_set (created_links, name, xbt_strdup ("1"), xbt_free);
- TRACE_surf_link_set_bandwidth (SIMIX_get_clock(), name, bw);
- TRACE_surf_link_set_latency (SIMIX_get_clock(), name, lat);
+ char alias[100];
+ snprintf (alias, 100, "%p", link);
+ pajeCreateContainer (SIMIX_get_clock(), alias, "LINK", "platform", name);
+ xbt_dict_set (created_links, alias, xbt_strdup ("1"), xbt_free);
+ TRACE_surf_link_set_bandwidth (SIMIX_get_clock(), link, bw);
+ TRACE_surf_link_set_latency (SIMIX_get_clock(), link, lat);
}
/*
__TRACE_surf_set_resource_variable (date, "power", resource, power);
}
-void TRACE_surf_link_set_bandwidth (double date, char *resource, double bandwidth)
+void TRACE_surf_link_set_bandwidth (double date, void *link, double bandwidth)
{
+ if (!TRACE_surf_link_is_traced (link)) return;
+
+ char resource[100];
+ snprintf (resource, 100, "%p", link);
__TRACE_surf_set_resource_variable (date, "bandwidth", resource, bandwidth);
}
-void TRACE_surf_link_set_latency (double date, char *resource, double latency)
+void TRACE_surf_link_set_latency (double date, void *link, double latency)
{
+ if (!TRACE_surf_link_is_traced (link)) return;
+
+ char resource[100];
+ snprintf (resource, 100, "%p", link);
__TRACE_surf_set_resource_variable (date, "latency", resource, latency);
}
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)
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;
+
+ if (TRACE_surf_link_is_traced (link)){
+ char resource[100];
+ snprintf (resource, 100, "%p", link);
+
+ pajeNewEvent (0.1, "source", resource, src);
+ pajeNewEvent (0.1, "destination", resource, dst);
+ }
+ }
+}
+
+int TRACE_surf_link_is_traced (void *link)
+{
+ char alias[100];
+ snprintf (alias, 100, "%p", link);
+ if (xbt_dict_get_or_null (created_links, alias)){
+ return 1;
+ }else{
+ return 0;
+ }
+}
+
#endif