XBT_PUBLIC(void) TRACE_user_host_variable(double time,
const char *variable,
double value, const char *what);
-XBT_PUBLIC(void) TRACE_user_link_variable(double time, const char *src,
- const char *dst,
- const char *variable,
- double value, const char *what);
+XBT_PUBLIC(void) TRACE_user_link_variable(double time, const char *resource,
+ const char *variable,
+ double value, const char *what);
XBT_PUBLIC(void) TRACE_declare_mark(const char *mark_type);
XBT_PUBLIC(void) TRACE_mark(const char *mark_type, const char *mark_value);
XBT_PUBLIC(void) TRACE_smpi_set_category(const char *category);
#define TRACE_link_variable_declare(var) \
TRACE_user_link_variable(0,NULL,NULL,var,0,"declare");
-#define TRACE_link_variable_set_with_time(time,src,dst,var,value) \
- TRACE_user_link_variable(time,src,dst,var,value,"set");
+#define TRACE_link_variable_set_with_time(time,link,var,value) \
+ TRACE_user_link_variable(time,link,var,value,"set");
-#define TRACE_link_variable_add_with_time(time,src,dst,var,value) \
- TRACE_user_link_variable(time,src,dst,var,value,"add");
+#define TRACE_link_variable_add_with_time(time,link,var,value) \
+ TRACE_user_link_variable(time,link,var,value,"add");
-#define TRACE_link_variable_sub_with_time(time,src,dst,var,value) \
- TRACE_user_link_variable(time,src,dst,var,value,"sub");
+#define TRACE_link_variable_sub_with_time(time,link,var,value) \
+ TRACE_user_link_variable(time,link,var,value,"sub");
-#define TRACE_link_variable_set(src,dst,var,value) \
- TRACE_user_link_variable(MSG_get_clock(),src,dst,var,value,"set");
+#define TRACE_link_variable_set(link,var,value) \
+ TRACE_user_link_variable(MSG_get_clock(),link,var,value,"set");
-#define TRACE_link_variable_add(src,dst,var,value) \
- TRACE_user_link_variable(MSG_get_clock(),src,dst,var,value,"add");
+#define TRACE_link_variable_add(link,var,value) \
+ TRACE_user_link_variable(MSG_get_clock(),link,var,value,"add");
-#define TRACE_link_variable_sub(src,dst,var,value) \
- TRACE_user_link_variable(MSG_get_clock(),src,dst,var,value,"sub");
+#define TRACE_link_variable_sub(link,var,value) \
+ TRACE_user_link_variable(MSG_get_clock(),link,var,value,"sub");
#else /* HAVE_TRACING */
#define TRACE_host_variable_add(var,value)
#define TRACE_host_variable_sub(var,value)
#define TRACE_link_variable_declare(var)
-#define TRACE_link_variable_set_with_time(time,src,dst,var,value)
-#define TRACE_link_variable_add_with_time(time,src,dst,var,value)
-#define TRACE_link_variable_sub_with_time(time,src,dst,var,value)
-#define TRACE_link_variable_set(src,dst,var,value)
-#define TRACE_link_variable_add(src,dst,var,value)
-#define TRACE_link_variable_sub(src,dst,var,value)
+#define TRACE_link_variable_set_with_time(time,link,var,value)
+#define TRACE_link_variable_add_with_time(time,link,var,value)
+#define TRACE_link_variable_sub_with_time(time,link,var,value)
+#define TRACE_link_variable_set(link,var,value)
+#define TRACE_link_variable_add(link,var,value)
+#define TRACE_link_variable_sub(link,var,value)
#define TRACE_declare_mark(type)
#define TRACE_mark(type,value)
#define TRACE_smpi_set_category(cat)
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)
{
- xbt_die ("deprecated");
-// FIXME
-// if (!TRACE_is_active() || !TRACE_categorized ())
-// return;
-//
-// char valuestr[100];
-// snprintf(valuestr, 100, "%g", value);
-//
-// if (strcmp(what, "declare") == 0) {
-// pajeDefineVariableType(variable, "LINK", variable);
-// return;
-// }
-//
-// if (!global_routing)
-// return;
-//
-// 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);
-//
-// if (strcmp(what, "set") == 0) {
-// pajeSetVariable(time, variable, resource, valuestr);
-// } else if (strcmp(what, "add") == 0) {
-// pajeAddVariable(time, variable, resource, valuestr);
-// } else if (strcmp(what, "sub") == 0) {
-// pajeSubVariable(time, variable, resource, valuestr);
-// }
-// }
+ if (!TRACE_is_active())
+ return;
+
+ char valuestr[100];
+ snprintf(valuestr, 100, "%g", value);
+
+ if (strcmp(what, "declare") == 0) {
+ {
+ //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__);
+ }
+
+ 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_type, resource, valuestr);
+ } else if (strcmp(what, "add") == 0) {
+ pajeAddVariable(time, variable_type, resource, valuestr);
+ } else if (strcmp(what, "sub") == 0) {
+ pajeSubVariable(time, variable_type, resource, valuestr);
+ }
+ }
}
void TRACE_user_host_variable(double time, const char *variable,