Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
finish the transition netcards->netpoints in the code
[simgrid.git] / src / instr / instr_config.cpp
index 72cfabd..d787861 100644 (file)
@@ -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 <vector>
 
 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<std::function<void()>> 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<std::function<void()>> 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);
 }