From 9409411def8d8be6010cec9fab904296307e81b9 Mon Sep 17 00:00:00 2001 From: schnorr Date: Thu, 5 Apr 2012 10:47:52 +0200 Subject: [PATCH] [trace] new public function to get declared categories --- include/instr/instr.h | 1 + src/instr/instr_interface.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) 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. * -- 2.20.1