X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/24a9a43343e8bb1e6ae073d8a480de24ffcf4d2f..ae5ff5ef44f3f731078a8fd8de489d7581ff8c12:/src/instr/instr_variables.c diff --git a/src/instr/instr_variables.c b/src/instr/instr_variables.c index fd33b7d3fe..5ffd22ffbd 100644 --- a/src/instr/instr_variables.c +++ b/src/instr/instr_variables.c @@ -10,39 +10,48 @@ #ifdef HAVE_TRACING -extern routing_global_t global_routing; +//extern routing_global_t global_routing; +extern xbt_dict_t hosts_types; +extern xbt_dict_t links_types; -void TRACE_user_link_variable(double time, const char *src, - const char *dst, const char *variable, +void TRACE_user_link_variable(double time, const char *resource, + const char *variable, double value, const char *what) { - if (!TRACE_is_active() || !TRACE_platform_is_enabled()) + if (!TRACE_is_active()) return; char valuestr[100]; snprintf(valuestr, 100, "%g", value); if (strcmp(what, "declare") == 0) { - pajeDefineVariableType(variable, "LINK", variable); - return; - } - - if (!global_routing) - return; + { + //check if links have been created + xbt_assert1 (links_types != NULL && xbt_dict_length(links_types) != 0, + "%s must be called after environment creation", __FUNCTION__); + } - xbt_dynar_t route = global_routing->get_route(src, dst); - unsigned int i; - void *link_ptr; - xbt_dynar_foreach(route, i, link_ptr) { - char resource[100]; - snprintf(resource, 100, "%p", link_ptr); + char new_type[INSTR_DEFAULT_STR_SIZE]; + xbt_dict_cursor_t cursor = NULL; + char *type; + void *data; + xbt_dict_foreach(links_types, cursor, type, data) { + snprintf (new_type, INSTR_DEFAULT_STR_SIZE, "%s-%s", variable, type); + pajeDefineVariableType (new_type, type, variable); + } + } else{ + char *link_type = instr_link_type (resource); + xbt_assert2 (link_type != NULL, + "link %s provided to %s is not known by the tracing mechanism", resource, __FUNCTION__); + char variable_type[INSTR_DEFAULT_STR_SIZE]; + snprintf (variable_type, INSTR_DEFAULT_STR_SIZE, "%s-%s", variable, link_type); if (strcmp(what, "set") == 0) { - pajeSetVariable(time, variable, resource, valuestr); + pajeSetVariable(time, variable_type, resource, valuestr); } else if (strcmp(what, "add") == 0) { - pajeAddVariable(time, variable, resource, valuestr); + pajeAddVariable(time, variable_type, resource, valuestr); } else if (strcmp(what, "sub") == 0) { - pajeSubVariable(time, variable, resource, valuestr); + pajeSubVariable(time, variable_type, resource, valuestr); } } } @@ -50,20 +59,40 @@ void TRACE_user_link_variable(double time, const char *src, void TRACE_user_host_variable(double time, const char *variable, double value, const char *what) { - char valuestr[100]; - if (!TRACE_is_active() || !TRACE_platform_is_enabled()) + if (!TRACE_is_active()) return; + char valuestr[100]; snprintf(valuestr, 100, "%g", value); if (strcmp(what, "declare") == 0) { - pajeDefineVariableType(variable, "HOST", variable); - } else if (strcmp(what, "set") == 0) { - pajeSetVariable(time, variable, MSG_host_self()->name, valuestr); - } else if (strcmp(what, "add") == 0) { - pajeAddVariable(time, variable, MSG_host_self()->name, valuestr); - } else if (strcmp(what, "sub") == 0) { - pajeSubVariable(time, variable, MSG_host_self()->name, valuestr); + { + //check if hosts have been created + xbt_assert1 (hosts_types != NULL && xbt_dict_length(hosts_types) != 0, + "%s must be called after environment creation", __FUNCTION__); + } + + char new_type[INSTR_DEFAULT_STR_SIZE]; + xbt_dict_cursor_t cursor = NULL; + char *type; + void *data; + xbt_dict_foreach(hosts_types, cursor, type, data) { + snprintf (new_type, INSTR_DEFAULT_STR_SIZE, "%s-%s", variable, type); + pajeDefineVariableType (new_type, type, variable); + } + } else{ + char *host_name = MSG_host_self()->name; + char *host_type = instr_host_type (host_name); + char variable_type[INSTR_DEFAULT_STR_SIZE]; + snprintf (variable_type, INSTR_DEFAULT_STR_SIZE, "%s-%s", variable, host_type); + + if (strcmp(what, "set") == 0) { + pajeSetVariable(time, variable_type, host_name, valuestr); + } else if (strcmp(what, "add") == 0) { + pajeAddVariable(time, variable_type, host_name, valuestr); + } else if (strcmp(what, "sub") == 0) { + pajeSubVariable(time, variable_type, host_name, valuestr); + } } }