Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add recent language dialects to MC_dwarf_default_lower_bound.
[simgrid.git] / src / surf / surf_interface.cpp
index 1e2286c..fd6fc5e 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2004-2020. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2004-2021. 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. */
@@ -33,9 +33,15 @@ std::vector<simgrid::kernel::resource::Model*> all_existing_models; /* to destro
 
 simgrid::kernel::profile::FutureEvtSet future_evt_set;
 std::vector<std::string> surf_path;
-/**  set of hosts for which one want to be notified if they ever restart. */
-std::set<std::string> watched_hosts;
-extern std::map<std::string, simgrid::kernel::resource::StorageType*> storage_types;
+
+/** set of hosts for which one want to be notified if they ever restart */
+std::set<std::string, std::less<>>& watched_hosts() // avoid static initialization order fiasco
+{
+  static std::set<std::string, std::less<>> value;
+  return value;
+}
+
+extern std::map<std::string, simgrid::kernel::resource::StorageType*, std::less<>> storage_types;
 
 std::vector<surf_model_description_t>* surf_plugin_description = nullptr;
 
@@ -126,7 +132,7 @@ double surf_get_clock()
   return NOW;
 }
 
-/* returns whether #file_path is a absolute file path. Surprising, isn't it ? */
+/* returns whether #file_path is an absolute file path. Surprising, isn't it ? */
 static bool is_absolute_file_path(const std::string& file_path)
 {
 #ifdef _WIN32
@@ -147,7 +153,7 @@ std::ifstream* surf_ifsopen(const std::string& name)
 {
   xbt_assert(not name.empty());
 
-  std::ifstream* fs = new std::ifstream();
+  auto* fs = new std::ifstream();
   if (is_absolute_file_path(name)) { /* don't mess with absolute file names */
     fs->open(name.c_str(), std::ifstream::in);
   }
@@ -197,7 +203,7 @@ int find_model_description(const std::vector<surf_model_description_t>& table, c
   auto pos = std::find_if(table.begin(), table.end(),
                           [&name](const surf_model_description_t& item) { return item.name == name; });
   if (pos != table.end())
-    return std::distance(table.begin(), pos);
+    return static_cast<int>(std::distance(table.begin(), pos));
 
   if (table.empty())
     xbt_die("No model is valid! This is a bug.");
@@ -222,9 +228,6 @@ void surf_init(int *argc, char **argv)
   xbt_init(argc, argv);
 
   sg_config_init(argc, argv);
-
-  if (MC_is_active())
-    MC_memory_init();
 }
 
 void surf_exit()