Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[trace] functions to get already declared user host/link tracing variables
authorschnorr <Lucas.Schnorr@imag.fr>
Thu, 5 Apr 2012 10:29:04 +0000 (12:29 +0200)
committerschnorr <Lucas.Schnorr@imag.fr>
Thu, 5 Apr 2012 12:03:05 +0000 (14:03 +0200)
include/instr/instr.h
src/instr/instr_interface.c

index f7eb843..e8464b6 100644 (file)
@@ -49,6 +49,7 @@ XBT_PUBLIC(void) TRACE_host_variable_sub (const char *host, const char *variable
 XBT_PUBLIC(void) TRACE_host_variable_set_with_time (double time, const char *host, const char *variable, double value);
 XBT_PUBLIC(void) TRACE_host_variable_add_with_time (double time, const char *host, const char *variable, double value);
 XBT_PUBLIC(void) TRACE_host_variable_sub_with_time (double time, const char *host, const char *variable, double value);
 XBT_PUBLIC(void) TRACE_host_variable_set_with_time (double time, const char *host, const char *variable, double value);
 XBT_PUBLIC(void) TRACE_host_variable_add_with_time (double time, const char *host, const char *variable, double value);
 XBT_PUBLIC(void) TRACE_host_variable_sub_with_time (double time, const char *host, const char *variable, double value);
+XBT_PUBLIC(xbt_dynar_t) TRACE_get_host_variables (void);
 
 /* for link variables */
 XBT_PUBLIC(void) TRACE_link_variable_declare (const char *var);
 
 /* for link variables */
 XBT_PUBLIC(void) TRACE_link_variable_declare (const char *var);
@@ -67,6 +68,7 @@ XBT_PUBLIC(void) TRACE_link_srcdst_variable_sub (const char *src, const char *ds
 XBT_PUBLIC(void) TRACE_link_srcdst_variable_set_with_time (double time, const char *src, const char *dst, const char *variable, double value);
 XBT_PUBLIC(void) TRACE_link_srcdst_variable_add_with_time (double time, const char *src, const char *dst, const char *variable, double value);
 XBT_PUBLIC(void) TRACE_link_srcdst_variable_sub_with_time (double time, const char *src, const char *dst, const char *variable, double value);
 XBT_PUBLIC(void) TRACE_link_srcdst_variable_set_with_time (double time, const char *src, const char *dst, const char *variable, double value);
 XBT_PUBLIC(void) TRACE_link_srcdst_variable_add_with_time (double time, const char *src, const char *dst, const char *variable, double value);
 XBT_PUBLIC(void) TRACE_link_srcdst_variable_sub_with_time (double time, const char *src, const char *dst, const char *variable, double value);
+XBT_PUBLIC(xbt_dynar_t) TRACE_get_link_variables (void);
 
 #else                           /* HAVE_TRACING */
 
 
 #else                           /* HAVE_TRACING */
 
index 8c76011..e0df2f0 100644 (file)
@@ -483,6 +483,33 @@ void TRACE_host_variable_sub_with_time (double time, const char *host, const cha
   instr_user_variable(time, host, variable, "HOST", value, INSTR_US_SUB, NULL, user_host_variables);
 }
 
   instr_user_variable(time, host, variable, "HOST", value, INSTR_US_SUB, NULL, user_host_variables);
 }
 
+static xbt_dynar_t instr_get_user_variables (xbt_dict_t filter)
+{
+  if (!TRACE_is_enabled()) return NULL;
+  if (!TRACE_needs_platform()) return NULL;
+
+  xbt_dynar_t ret = xbt_dynar_new (sizeof(char*), &xbt_free_ref);
+  xbt_dict_cursor_t cursor = NULL;
+  char *name, *value;
+  xbt_dict_foreach(filter, cursor, name, value) {
+    xbt_dynar_push_as (ret, char*, xbt_strdup(name));
+  }
+  return ret;
+}
+
+/** \ingroup TRACE_user_variables
+ *  \brief Get declared user host variables
+ *
+ * This function should be used to get host variables that were already
+ * declared with #TRACE_host_variable_declare or with #TRACE_host_variable_declare_with_color.
+ *
+ * \return A dynar with the declared host variables, must be freed with xbt_dynar_free.
+ */
+xbt_dynar_t TRACE_get_host_variables (void)
+{
+  return instr_get_user_variables (user_host_variables);
+}
+
 /* for link variables */
 /** \ingroup TRACE_user_variables
  *  \brief Declare a new user variable associated to links.
 /* for link variables */
 /** \ingroup TRACE_user_variables
  *  \brief Declare a new user variable associated to links.
@@ -759,4 +786,17 @@ void TRACE_link_srcdst_variable_sub_with_time (double time, const char *src, con
   instr_user_srcdst_variable (time, src, dst, variable, "LINK", value, INSTR_US_SUB);
 }
 
   instr_user_srcdst_variable (time, src, dst, variable, "LINK", value, INSTR_US_SUB);
 }
 
+/** \ingroup TRACE_user_variables
+ *  \brief Get declared user link variables
+ *
+ * This function should be used to get link variables that were already
+ * declared with #TRACE_link_variable_declare or with #TRACE_link_variable_declare_with_color.
+ *
+ * \return A dynar with the declared link variables, must be freed with xbt_dynar_free.
+ */
+xbt_dynar_t TRACE_get_link_variables (void)
+{
+  return instr_get_user_variables (user_link_variables);
+}
+
 #endif /* HAVE_TRACING */
 #endif /* HAVE_TRACING */