X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/290d4e7e276bc06aee8e440f07e6bbd41af6259d..7b260a6cdc16e5fe788e15f4f4fb2412c9605263:/src/instr/instr_config.cpp diff --git a/src/instr/instr_config.cpp b/src/instr/instr_config.cpp index 72cfabd53b..d787861180 100644 --- a/src/instr/instr_config.cpp +++ b/src/instr/instr_config.cpp @@ -5,8 +5,8 @@ * under the terms of the license (GNU LGPL) which comes with this package. */ #include "src/instr/instr_private.h" -#include "simgrid/sg_config.h" #include "surf/surf.h" +#include XBT_LOG_NEW_CATEGORY(instr, "Logging the behavior of the tracing system (used for Visualization/Analysis of simulations)"); XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_config, instr, "Configuration"); @@ -87,12 +87,11 @@ static void TRACE_getopts() trace_precision = xbt_cfg_get_int(OPT_TRACING_PRECISION); } -static xbt_dynar_t TRACE_start_functions = nullptr; +static std::vector> TRACE_start_functions; + void TRACE_add_start_function(void (*func) ()) { - if (TRACE_start_functions == nullptr) - TRACE_start_functions = xbt_dynar_new(sizeof(void (*)()), nullptr); - xbt_dynar_push(TRACE_start_functions, &func); + TRACE_start_functions.push_back(func); } int TRACE_start() @@ -107,8 +106,6 @@ int TRACE_start() XBT_DEBUG("Tracing starts"); /* init the tracing module to generate the right output */ - /* open internal buffer */ - TRACE_init(); /* open the trace file(s) */ const char* format = xbt_cfg_get_string(OPT_TRACING_FORMAT); @@ -137,24 +134,17 @@ int TRACE_start() user_vm_variables = xbt_dict_new_homogeneous(xbt_free_f); user_link_variables = xbt_dict_new_homogeneous(xbt_free_f); - if (TRACE_start_functions != nullptr) { - void (*func) (); - unsigned int iter; - xbt_dynar_foreach(TRACE_start_functions, iter, func) { - func(); - } - } + for (auto func: TRACE_start_functions) + func(); } - xbt_dynar_free(&TRACE_start_functions); + TRACE_start_functions.clear(); return 0; } -static xbt_dynar_t TRACE_end_functions = nullptr; +static std::vector> TRACE_end_functions; void TRACE_add_end_function(void (*func) (void)) { - if (TRACE_end_functions == nullptr) - TRACE_end_functions = xbt_dynar_new(sizeof(void (*)(void)), nullptr); - xbt_dynar_push(TRACE_end_functions, &func); + TRACE_end_functions.push_back(func); } int TRACE_end() @@ -178,13 +168,9 @@ int TRACE_end() PJ_container_release(); PJ_type_release(); - if (TRACE_end_functions != nullptr) { - void (*func) (void); - unsigned int iter; - xbt_dynar_foreach(TRACE_end_functions, iter, func) { - func(); - } - } + for (auto func: TRACE_end_functions) + func(); + TRACE_start_functions.clear(); xbt_dict_free(&user_link_variables); xbt_dict_free(&user_host_variables); @@ -202,15 +188,12 @@ int TRACE_end() }else{ xbt_die("Unknown trace format :%s ", format); } - /* close internal buffer */ - TRACE_finalize(); + /* de-activate trace */ trace_active = 0; XBT_DEBUG("Tracing is off"); XBT_DEBUG("Tracing system is shutdown"); } - xbt_dynar_free(&TRACE_start_functions); /* useful when exiting early */ - xbt_dynar_free(&TRACE_end_functions); return retval; } @@ -506,7 +489,7 @@ void TRACE_help (int detailed) print_line (OPT_TRACING_TOPOLOGY, "Register the platform topology as a graph", " This option (enabled by default) can be used to disable the tracing of\n" " the platform topology in the trace file. Sometimes, such task is really\n" - " time consuming, since it must get the route from each host ot other hosts\n" + " time consuming, since it must get the route from each host to other hosts\n" " within the same Autonomous System (AS).", detailed); }