Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
use surf init/fini callbacks, no need for TRACE ones
authorMartin Quinson <martin.quinson@loria.fr>
Wed, 12 Apr 2017 21:52:12 +0000 (23:52 +0200)
committerMartin Quinson <martin.quinson@loria.fr>
Wed, 12 Apr 2017 21:52:12 +0000 (23:52 +0200)
src/include/instr/instr_interface.h
src/instr/instr_config.cpp
src/smpi/smpi_global.cpp
src/surf/surf_interface.cpp

index 5414de7..8bb38ce 100644 (file)
@@ -16,9 +16,7 @@ XBT_PUBLIC(void) TRACE_global_init(int *argc, char **argv);
 XBT_PUBLIC(void) TRACE_help(int detailed);
 XBT_PUBLIC(void) TRACE_surf_resource_utilization_alloc();
 XBT_PUBLIC(void) TRACE_surf_resource_utilization_release();
-XBT_PUBLIC(void) TRACE_add_start_function(void (*func)(void));
-XBT_PUBLIC(void) TRACE_add_end_function(void (*func)(void));
 
 SG_END_DECL()
 
-#endif
\ No newline at end of file
+#endif
index d787861..1726c2d 100644 (file)
@@ -87,13 +87,6 @@ static void TRACE_getopts()
   trace_precision           = xbt_cfg_get_int(OPT_TRACING_PRECISION);
 }
 
-static std::vector<std::function<void()>> TRACE_start_functions;
-
-void TRACE_add_start_function(void (*func) ())
-{
-  TRACE_start_functions.push_back(func);
-}
-
 int TRACE_start()
 {
   if (TRACE_is_configured())
@@ -133,20 +126,10 @@ int TRACE_start()
     user_host_variables = xbt_dict_new_homogeneous(xbt_free_f);
     user_vm_variables = xbt_dict_new_homogeneous(xbt_free_f);
     user_link_variables = xbt_dict_new_homogeneous(xbt_free_f);
-
-    for (auto func: TRACE_start_functions)
-      func();
   }
-  TRACE_start_functions.clear();
   return 0;
 }
 
-static std::vector<std::function<void()>> TRACE_end_functions;
-void TRACE_add_end_function(void (*func) (void))
-{
-  TRACE_end_functions.push_back(func);
-}
-
 int TRACE_end()
 {
   int retval;
@@ -168,10 +151,6 @@ int TRACE_end()
     PJ_container_release();
     PJ_type_release();
 
-    for (auto func: TRACE_end_functions)
-      func();
-    TRACE_start_functions.clear();
-
     xbt_dict_free(&user_link_variables);
     xbt_dict_free(&user_host_variables);
     xbt_dict_free(&user_vm_variables);
index 0da7f66..b20dd69 100644 (file)
@@ -18,6 +18,7 @@
 #include "src/mc/mc_replay.h"
 #include "src/msg/msg_private.h"
 #include "src/simix/smx_private.h"
+#include "src/surf/surf_interface.hpp"
 #include "surf/surf.h"
 #include "xbt/replay.hpp"
 #include <xbt/config.hpp>
@@ -497,17 +498,17 @@ int smpi_main(const char* executable, int argc, char *argv[])
      * configuration tools */
     return 0;
   }
-  smpi_init_logs();
 
   TRACE_global_init(&argc, argv);
-  TRACE_add_start_function(TRACE_smpi_alloc);
-  TRACE_add_end_function(TRACE_smpi_release);
+  TRACE_smpi_alloc();
+  simgrid::surf::surfExitCallbacks.connect(TRACE_smpi_release);
 
   SIMIX_global_init(&argc, argv);
   MSG_init(&argc,argv);
 
   SMPI_switch_data_segment = &smpi_switch_data_segment;
 
+  smpi_init_logs();
   smpi_init_options();
 
   // parse the platform file: get the host list
index 0417b98..39119c5 100644 (file)
@@ -365,8 +365,8 @@ void surf_init(int *argc, char **argv)
   if (!future_evt_set)
     future_evt_set = new simgrid::trace_mgr::future_evt_set();
 
-  TRACE_add_start_function(TRACE_surf_alloc);
-  TRACE_add_end_function(TRACE_surf_release);
+  TRACE_surf_alloc();
+  simgrid::surf::surfExitCallbacks.connect(TRACE_surf_release);
 
   sg_config_init(argc, argv);