Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of https://framagit.org/simgrid/simgrid
[simgrid.git] / src / instr / instr_config.cpp
index 2ff2531..fcddfde 100644 (file)
@@ -1,13 +1,16 @@
-/* Copyright (c) 2010-2018. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2010-2019. The SimGrid Team. All rights reserved.          */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
 #include "include/xbt/config.hpp"
+#include "simgrid/Exception.hpp"
 #include "simgrid/s4u/Engine.hpp"
+#include "simgrid/version.h"
 #include "src/instr/instr_private.hpp"
 #include "surf/surf.hpp"
-#include "xbt/virtu.h" /* sg_cmdline */
+#include "xbt/virtu.h" /* xbt_cmdline */
+
 #include <fstream>
 #include <string>
 #include <vector>
@@ -17,16 +20,12 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_config, instr, "Configuration");
 
 std::ofstream tracing_file;
 
-#define OPT_TRACING_BASIC                "tracing/basic"
-#define OPT_TRACING_COMMENT_FILE         "tracing/comment-file"
-#define OPT_TRACING_DISABLE_DESTROY      "tracing/disable-destroy"
-#define OPT_TRACING_FORMAT_TI_ONEFILE    "tracing/smpi/format/ti-one-file"
-#define OPT_TRACING_SMPI_COMPUTING       "tracing/smpi/computing"
-#define OPT_TRACING_SMPI_GROUP           "tracing/smpi/group"
-#define OPT_TRACING_SMPI_INTERNALS       "tracing/smpi/internals"
-#define OPT_TRACING_SMPI_SLEEPING        "tracing/smpi/sleeping"
-#define OPT_TRACING_SMPI                 "tracing/smpi"
-#define OPT_TRACING_TOPOLOGY             "tracing/platform/topology"
+constexpr char OPT_TRACING_BASIC[]             = "tracing/basic";
+constexpr char OPT_TRACING_COMMENT_FILE[]      = "tracing/comment-file";
+constexpr char OPT_TRACING_DISABLE_DESTROY[]   = "tracing/disable-destroy";
+constexpr char OPT_TRACING_FORMAT_TI_ONEFILE[] = "tracing/smpi/format/ti-one-file";
+constexpr char OPT_TRACING_SMPI[]              = "tracing/smpi";
+constexpr char OPT_TRACING_TOPOLOGY[]          = "tracing/platform/topology";
 
 static simgrid::config::Flag<bool> trace_enabled{
     "tracing", "Enable the tracing system. You have to enable this option to use other tracing options.", false};
@@ -45,13 +44,14 @@ static simgrid::config::Flag<bool> trace_platform{"tracing/platform",
 static simgrid::config::Flag<bool> trace_platform_topology{
     OPT_TRACING_TOPOLOGY, "Register the platform topology in the trace as a graph.", true};
 static simgrid::config::Flag<bool> trace_smpi_enabled{OPT_TRACING_SMPI, "Tracing of the SMPI interface.", false};
-static simgrid::config::Flag<bool> trace_smpi_grouped{OPT_TRACING_SMPI_GROUP, "Group MPI processes by host.", false};
+static simgrid::config::Flag<bool> trace_smpi_grouped{"tracing/smpi/group", "Group MPI processes by host.", false};
 
 static simgrid::config::Flag<bool> trace_smpi_computing{
-    OPT_TRACING_SMPI_COMPUTING, "Generate states for timing out of SMPI parts of the application", false};
+    "tracing/smpi/computing", "Generate 'Computing' states to trace the out-of-SMPI parts of the application", false};
 
 static simgrid::config::Flag<bool> trace_smpi_sleeping{
-    OPT_TRACING_SMPI_SLEEPING, "Generate states for timing out of SMPI parts of the application", false};
+    "tracing/smpi/sleeping", "Generate 'Sleeping' states for the sleeps in the application that do not pertain to SMPI",
+    false};
 
 static simgrid::config::Flag<bool> trace_view_internals{
     "tracing/smpi/internals",
@@ -105,7 +105,9 @@ static void TRACE_start()
     std::string filename = TRACE_get_filename();
     tracing_file.open(filename.c_str(), std::ofstream::out);
     if (tracing_file.fail()) {
-      THROWF(system_error, 1, "Tracefile %s could not be opened for writing.", filename.c_str());
+      throw simgrid::TracingError(
+          XBT_THROW_POINT,
+          simgrid::xbt::string_printf("Tracefile %s could not be opened for writing.", filename.c_str()));
     }
 
     XBT_DEBUG("Filename %s is open for writing", filename.c_str());
@@ -267,11 +269,11 @@ std::string TRACE_get_filename()
 
 void TRACE_global_init()
 {
-  static bool is_initialised = false;
-  if (is_initialised)
+  static bool is_initialized = false;
+  if (is_initialized)
     return;
 
-  is_initialised = true;
+  is_initialized = true;
 
   /* name of the tracefile */
   simgrid::config::declare_flag<std::string>("tracing/filename", "Trace file created by the instrumented SimGrid.",
@@ -293,9 +295,9 @@ void TRACE_global_init()
                                      6);
 
   /* Connect callbacks */
-  simgrid::s4u::on_platform_creation.connect(TRACE_start);
-  simgrid::s4u::on_deadlock.connect(TRACE_end);
-  simgrid::s4u::on_simulation_end.connect(TRACE_end);
+  simgrid::s4u::Engine::on_platform_creation.connect(TRACE_start);
+  simgrid::s4u::Engine::on_deadlock.connect(TRACE_end);
+  simgrid::s4u::Engine::on_simulation_end.connect(TRACE_end);
 }
 
 static void print_line(const char* option, const char* desc, const char* longdesc)
@@ -303,29 +305,20 @@ static void print_line(const char* option, const char* desc, const char* longdes
   std::string str = std::string("--cfg=") + option + " ";
 
   int len = str.size();
-  printf("%s%*.*s %s\n", str.c_str(), 30 - len, 30 - len, "", desc);
+  XBT_HELP("%s%*.*s %s", str.c_str(), 30 - len, 30 - len, "", desc);
   if (longdesc != nullptr) {
-    printf ("%s\n\n", longdesc);
+    XBT_HELP("%s\n", longdesc);
   }
 }
 
 void TRACE_help()
 {
-  printf("Description of the tracing options accepted by this simulator:\n\n");
+  XBT_HELP("Description of the tracing options accepted by this simulator:\n");
   print_line(OPT_TRACING_SMPI, "Trace the MPI Interface (SMPI)",
              "  This option only has effect if this simulator is SMPI-based. Traces the MPI\n"
              "  interface and generates a trace that can be analyzed using Gantt-like\n"
              "  visualizations. Every MPI function (implemented by SMPI) is transformed in a\n"
              "  state, and point-to-point communications can be analyzed with arrows.");
-  print_line(OPT_TRACING_SMPI_GROUP, "Group MPI processes by host (SMPI)",
-             "  This option only has effect if this simulator is SMPI-based. The processes\n"
-             "  are grouped by the hosts where they were executed.");
-  print_line(OPT_TRACING_SMPI_COMPUTING, "Generates a \" Computing \" State",
-             "  This option aims at tracing computations in the application, outside SMPI\n"
-             "  to allow further study of simulated or real computation time");
-  print_line(OPT_TRACING_SMPI_SLEEPING, "Generates a \" Sleeping \" State",
-             "  This option aims at tracing sleeps in the application, outside SMPI\n"
-             "  to allow further study of simulated or real sleep time");
   print_line(OPT_TRACING_DISABLE_DESTROY, "Disable platform containers destruction",
              "  Disable the destruction of containers at the end of simulation. This can be\n"
              "  used with simulators that have a different notion of time (different from\n"