From: schnorr Date: Thu, 5 Apr 2012 08:47:52 +0000 (+0200) Subject: [trace] new public function to get declared categories X-Git-Tag: v3_7~98 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/9409411def8d8be6010cec9fab904296307e81b9?hp=095cae2966284fdabd5442a0c122aadb4f6cd398 [trace] new public function to get declared categories --- diff --git a/include/instr/instr.h b/include/instr/instr.h index 2167d6cbff..7088976d41 100644 --- a/include/instr/instr.h +++ b/include/instr/instr.h @@ -21,6 +21,7 @@ */ XBT_PUBLIC(void) TRACE_category(const char *category); XBT_PUBLIC(void) TRACE_category_with_color (const char *category, const char *color); +XBT_PUBLIC(xbt_dynar_t) TRACE_get_categories (void); XBT_PUBLIC(void) TRACE_smpi_set_category(const char *category); /* diff --git a/src/instr/instr_interface.c b/src/instr/instr_interface.c index 2249bd10c8..3f4cc07da3 100644 --- a/src/instr/instr_interface.c +++ b/src/instr/instr_interface.c @@ -95,6 +95,34 @@ void TRACE_category_with_color (const char *category, const char *color) instr_new_variable_type (category, final_color); } + +/** \ingroup TRACE_category + * \brief Get declared categories + * + * This function should be used to get categories that were already + * declared with #TRACE_category or with #TRACE_category_with_color. + * + * See \ref tracing_tracing for details on how to trace + * the (categorized) resource utilization. + * + * \return A dynar with the declared categories, must be freed with xbt_dynar_free. + * + * \see MSG_task_set_category, SD_task_set_category + */ +xbt_dynar_t TRACE_get_categories (void) +{ + if (!TRACE_is_enabled()) return NULL; + if (!TRACE_categorized()) 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(created_categories, cursor, name, value) { + xbt_dynar_push_as (ret, char*, xbt_strdup(name)); + } + return ret; +} + /** \ingroup TRACE_mark * \brief Declare a new type for tracing mark. *