Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
better use of signals for TRACE init/exit
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Mon, 30 Apr 2018 14:17:16 +0000 (16:17 +0200)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Mon, 30 Apr 2018 14:23:26 +0000 (16:23 +0200)
src/instr/instr_config.cpp
src/instr/instr_private.hpp
src/msg/msg_global.cpp
src/simix/smx_global.cpp
src/smpi/internals/smpi_global.cpp
src/surf/sg_platf.cpp
src/surf/surf_interface.cpp

index c8c2ea0..41ac7a6 100644 (file)
@@ -4,6 +4,7 @@
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
 #include "include/xbt/config.hpp"
+#include "simgrid/s4u/Engine.hpp"
 #include "src/instr/instr_private.hpp"
 #include "surf/surf.hpp"
 #include <string>
@@ -106,7 +107,7 @@ void TRACE_start()
   }
 }
 
-void TRACE_end()
+static void TRACE_end()
 {
   if (not trace_active)
     return;
@@ -260,6 +261,7 @@ void TRACE_global_init()
     return;
 
   is_initialised = true;
+
   /* name of the tracefile */
   simgrid::config::declare_flag<std::string>(OPT_TRACING_FILENAME, "Trace file created by the instrumented SimGrid.",
                                              "simgrid.trace");
@@ -276,6 +278,11 @@ void TRACE_global_init()
   simgrid::config::declare_flag<int>(OPT_TRACING_PRECISION, "Numerical precision used when timestamping events "
                                                             "(expressed in number of digits after decimal point)",
                                      6);
+
+  /* Connect callbacks */
+  simgrid::s4u::on_platform_creation.connect(TRACE_start);
+  simgrid::s4u::onDeadlock.connect(TRACE_end);
+  simgrid::s4u::onSimulationEnd.connect(TRACE_end);
 }
 
 static void print_line (const char *option, const char *desc, const char *longdesc, int detailed)
index e7e5c18..0574307 100644 (file)
@@ -258,7 +258,6 @@ void instr_new_value_for_user_state_type(std::string new_typename, const char* v
 XBT_PRIVATE void TRACE_start();
 XBT_PRIVATE void TRACE_TI_start();
 XBT_PRIVATE void TRACE_TI_end();
-XBT_PRIVATE void TRACE_end();
 XBT_PRIVATE void TRACE_global_init();
 XBT_PRIVATE void TRACE_help(int detailed);
 
index f94fdf3..70480e1 100644 (file)
@@ -100,7 +100,6 @@ static void MSG_exit() {
   if (msg_global==nullptr)
     return;
 
-  TRACE_end();
   delete msg_global;
   msg_global = nullptr;
 }
index dfee2be..2bcbdb2 100644 (file)
@@ -537,8 +537,6 @@ void SIMIX_run()
 
   if (not simix_global->process_list.empty()) {
 
-    TRACE_end();
-
     if (simix_global->process_list.size() <= simix_global->daemons.size()) {
       XBT_CRITICAL("Oops! Daemon actors cannot do any blocking activity (communications, synchronization, etc) "
                    "once the simulation is over. Please fix your on_exit() functions.");
index c88ffb2..e76aaa0 100644 (file)
@@ -595,8 +595,6 @@ int smpi_main(const char* executable, int argc, char *argv[])
   }
   smpi_global_destroy();
 
-  TRACE_end();
-
   return smpi_exit_status;
 }
 
index 9814e4a..e331fd1 100644 (file)
@@ -16,7 +16,6 @@
 #include "simgrid/kernel/routing/VivaldiZone.hpp"
 #include "simgrid/s4u/Engine.hpp"
 #include "src/include/simgrid/sg_config.hpp"
-#include "src/instr/instr_private.hpp"
 #include "src/kernel/EngineImpl.hpp"
 #include "src/simix/smx_host_private.hpp"
 #include "src/simix/smx_private.hpp"
@@ -50,7 +49,6 @@ static simgrid::kernel::routing::NetZoneImpl* routing_get_current()
 /** Module management function: creates all internal data structures */
 void sg_platf_init()
 {
-  simgrid::s4u::on_platform_creation.connect(TRACE_start);
   simgrid::s4u::on_platform_created.connect(check_disk_attachment);
 }
 
index ed1bd2a..2786df7 100644 (file)
@@ -7,11 +7,11 @@
 #include "mc/mc.h"
 #include "simgrid/s4u/Engine.hpp"
 #include "simgrid/sg_config.hpp"
-#include "src/instr/instr_private.hpp" // TRACE_end(). FIXME: remove by subscribing tracing to the surf signals
 #include "src/internal_config.h"
 #include "src/surf/HostImpl.hpp"
 #include "src/surf/xml/platf.hpp"
 #include "surf/surf.hpp"
+#include "xbt/module.h"
 
 #include <fstream>
 #include <string>
@@ -311,8 +311,6 @@ void surf_init(int *argc, char **argv)
 
 void surf_exit()
 {
-  TRACE_end();                  /* Just in case it was not called by the upper layer (or there is no upper layer) */
-
   simgrid::s4u::Engine::shutdown();
   sg_link_exit();
   for (auto const& e : storage_types) {