Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Remove a global variable, and use a static to remember if smpi_main is running.
[simgrid.git] / src / smpi / internals / smpi_config.cpp
index 8165bad..41f771e 100644 (file)
@@ -30,7 +30,6 @@ constexpr bool HAVE_WORKING_MMAP = false;
 constexpr bool HAVE_WORKING_MMAP = true;
 #endif
 
-bool _smpi_options_initialized=false;
 SharedMallocType _smpi_cfg_shared_malloc = SharedMallocType::GLOBAL;
 SmpiPrivStrategies _smpi_cfg_privatization = SmpiPrivStrategies::NONE;
 double _smpi_cfg_host_speed;
@@ -193,10 +192,16 @@ void smpi_init_options()
   smpi_init_options_internal(false);
 }
 
-void smpi_init_options_internal(bool called_by_smpimain)
+void smpi_init_options_internal(bool called_by_smpi_main)
 {
+  static bool smpi_options_initialized = false;
+  static bool running_with_smpi_main   = false;
+
+  if (called_by_smpi_main)
+    running_with_smpi_main = true;
+
   // return if already called
-  if(_smpi_options_initialized)
+  if (smpi_options_initialized)
     return;
   simgrid::config::declare_flag<bool>("smpi/display-timing", "Whether we should display the timing after simulation.", false);
   simgrid::config::declare_flag<bool>("smpi/keep-temps", "Whether we should keep the generated temporary files.", false);
@@ -221,7 +226,7 @@ void smpi_init_options_internal(bool called_by_smpimain)
 
   simgrid::config::declare_flag<std::string>(
       "smpi/privatization", "How we should privatize global variable at runtime (no, yes, mmap, dlopen).",
-      default_privatization, [called_by_smpimain](const std::string& smpi_privatize_option) {
+      default_privatization, [](const std::string& smpi_privatize_option) {
         if (smpi_privatize_option == "no" || smpi_privatize_option == "0")
           _smpi_cfg_privatization = SmpiPrivStrategies::NONE;
         else if (smpi_privatize_option == "yes" || smpi_privatize_option == "1")
@@ -233,7 +238,7 @@ void smpi_init_options_internal(bool called_by_smpimain)
         else
           xbt_die("Invalid value for smpi/privatization: '%s'", smpi_privatize_option.c_str());
 
-        if (not called_by_smpimain) {
+        if (not running_with_smpi_main) {
           XBT_DEBUG("Running without smpi_main(); disable smpi/privatization.");
           _smpi_cfg_privatization = SmpiPrivStrategies::NONE;
         }
@@ -263,7 +268,7 @@ void smpi_init_options_internal(bool called_by_smpimain)
 
   simgrid::config::declare_flag<bool>("smpi/finalization-barrier", "Do we add a barrier in MPI_Finalize or not", false);
 
-  _smpi_options_initialized=true;
+  smpi_options_initialized = true;
 }
 
 void smpi_check_options()