Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Kill a file with 'surf' in its name, and further empty surf_interface.cpp
authorMartin Quinson <martin.quinson@ens-rennes.fr>
Sun, 19 Feb 2023 11:49:24 +0000 (12:49 +0100)
committerMartin Quinson <martin.quinson@ens-rennes.fr>
Sun, 19 Feb 2023 11:49:24 +0000 (12:49 +0100)
MANIFEST.in
src/kernel/xml/platf_private.hpp
src/kernel/xml/sg_platf.cpp
src/kernel/xml/surfxml_parseplatf.cpp [deleted file]
src/kernel/xml/surfxml_sax_cb.cpp
src/surf/surf_interface.hpp
tools/cmake/DefinePackages.cmake

index 797b943..bf2ba95 100644 (file)
@@ -2125,7 +2125,6 @@ include src/kernel/xml/sg_platf.cpp
 include src/kernel/xml/simgrid.dtd
 include src/kernel/xml/simgrid_dtd.c
 include src/kernel/xml/simgrid_dtd.h
-include src/kernel/xml/surfxml_parseplatf.cpp
 include src/kernel/xml/surfxml_sax_cb.cpp
 include src/mc/AddressSpace.hpp
 include src/mc/ModelChecker.cpp
index 4c74ac4..be3a2d1 100644 (file)
@@ -16,6 +16,8 @@
 #include <string>
 #include <vector>
 
+extern XBT_PRIVATE std::unordered_map<std::string, simgrid::kernel::profile::Profile*> traces_set_list;
+
 namespace simgrid::kernel::routing {
 /* ***************************************** */
 /*
@@ -203,7 +205,6 @@ XBT_PUBLIC void sg_platf_new_bypass_route(simgrid::kernel::routing::RouteCreatio
 XBT_PUBLIC void sg_platf_new_trace(const simgrid::kernel::routing::ProfileCreationArgs* trace);
 
 XBT_PUBLIC void sg_platf_new_actor(simgrid::kernel::routing::ActorCreationArgs* actor);
-XBT_PRIVATE void sg_platf_trace_connect(simgrid::kernel::routing::TraceConnectCreationArgs* trace_connect);
 
 /* Prototypes of the functions offered by flex */
 XBT_PUBLIC int simgrid_parse_lex();
index 5514fb1..888944a 100644 (file)
@@ -3,6 +3,8 @@
 /* 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. */
 
+/* This file implements the public API to platform parsing                  */
+
 #include <simgrid/Exception.hpp>
 #include <simgrid/kernel/routing/DijkstraZone.hpp>
 #include <simgrid/kernel/routing/DragonflyZone.hpp>
 #include "src/kernel/xml/platf.hpp"
 #include "src/kernel/xml/platf_private.hpp"
 #include "src/simgrid/sg_config.hpp"
-#include "src/surf/surf_interface.hpp"
 
 #include <algorithm>
 #include <string>
 
 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(platf_parse);
 
+/* This function acts as a main in the parsing area. */
+void parse_platform_file(const std::string& file)
+{
+  /* init the flex parser */
+  simgrid_parse_open(file);
+
+  /* Do the actual parsing */
+  simgrid_parse();
+
+  simgrid_parse_close();
+}
+
 namespace simgrid::kernel::routing {
 xbt::signal<void(ClusterCreationArgs const&)> on_cluster_creation;
 } // namespace simgrid::kernel::routing
diff --git a/src/kernel/xml/surfxml_parseplatf.cpp b/src/kernel/xml/surfxml_parseplatf.cpp
deleted file mode 100644 (file)
index c5e7c03..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-/* Copyright (c) 2006-2023. 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 <simgrid/s4u/Engine.hpp>
-
-#include "src/kernel/resource/CpuImpl.hpp"
-#include "src/kernel/resource/LinkImpl.hpp"
-#include "src/kernel/xml/platf.hpp"
-#include "src/kernel/xml/platf_private.hpp"
-
-#include <vector>
-
-/* Trace related stuff */
-XBT_PRIVATE std::unordered_map<std::string, simgrid::kernel::profile::Profile*> traces_set_list;
-static std::unordered_map<std::string, std::string> trace_connect_list_host_avail;
-static std::unordered_map<std::string, std::string> trace_connect_list_host_speed;
-static std::unordered_map<std::string, std::string> trace_connect_list_link_avail;
-static std::unordered_map<std::string, std::string> trace_connect_list_link_bw;
-static std::unordered_map<std::string, std::string> trace_connect_list_link_lat;
-
-void sg_platf_trace_connect(simgrid::kernel::routing::TraceConnectCreationArgs* trace_connect)
-{
-  simgrid_parse_assert(traces_set_list.find(trace_connect->trace) != traces_set_list.end(),
-                       "Cannot connect trace " + trace_connect->trace + " to " + trace_connect->element +
-                           ": trace unknown");
-
-  switch (trace_connect->kind) {
-    case simgrid::kernel::routing::TraceConnectKind::HOST_AVAIL:
-      trace_connect_list_host_avail.try_emplace(trace_connect->trace, trace_connect->element);
-      break;
-    case simgrid::kernel::routing::TraceConnectKind::SPEED:
-      trace_connect_list_host_speed.try_emplace(trace_connect->trace, trace_connect->element);
-      break;
-    case simgrid::kernel::routing::TraceConnectKind::LINK_AVAIL:
-      trace_connect_list_link_avail.try_emplace(trace_connect->trace, trace_connect->element);
-      break;
-    case simgrid::kernel::routing::TraceConnectKind::BANDWIDTH:
-      trace_connect_list_link_bw.try_emplace(trace_connect->trace, trace_connect->element);
-      break;
-    case simgrid::kernel::routing::TraceConnectKind::LATENCY:
-      trace_connect_list_link_lat.try_emplace(trace_connect->trace, trace_connect->element);
-      break;
-    default:
-      simgrid_parse_error("Cannot connect trace " + trace_connect->trace + " to " + trace_connect->element +
-                          ": unknown kind of trace");
-  }
-}
-
-/* This function acts as a main in the parsing area. */
-void parse_platform_file(const std::string& file)
-{
-  /* init the flex parser */
-  simgrid_parse_open(file);
-
-  /* Do the actual parsing */
-  simgrid_parse();
-
-  /* Get the Engine singleton once and for all*/
-  const auto engine = simgrid::s4u::Engine::get_instance();
-
-  /* connect all profiles relative to hosts */
-  for (auto const& [trace, name] : trace_connect_list_host_avail) {
-    simgrid_parse_assert(traces_set_list.find(trace) != traces_set_list.end(),
-                         "<trace_connect kind=\"HOST_AVAIL\">: Trace " + trace + " undefined.");
-    auto profile = traces_set_list.at(trace);
-
-    auto host = engine->host_by_name_or_null(name);
-    simgrid_parse_assert(host, "<trace_connect kind=\"HOST_AVAIL\">: Host " + name + " undefined.");
-    host->set_state_profile(profile);
-  }
-
-  for (auto const& [trace, name] : trace_connect_list_host_speed) {
-    simgrid_parse_assert(traces_set_list.find(trace) != traces_set_list.end(),
-                         "<trace_connect kind=\"SPEED\">: Trace " + trace + " undefined.");
-    auto profile = traces_set_list.at(trace);
-
-    auto host = engine->host_by_name_or_null(name);
-    simgrid_parse_assert(host, "<trace_connect kind=\"SPEED\">: Host " + name + " undefined.");
-    host->set_speed_profile(profile);
-  }
-
-  for (auto const& [trace, name] : trace_connect_list_link_avail) {
-    simgrid_parse_assert(traces_set_list.find(trace) != traces_set_list.end(),
-                         "<trace_connect kind=\"LINK_AVAIL\">: Trace " + trace + " undefined.");
-    auto profile = traces_set_list.at(trace);
-
-    auto link = engine->link_by_name_or_null(name);
-    simgrid_parse_assert(link, "<trace_connect kind=\"LINK_AVAIL\">: Link " + name + " undefined.");
-    link->set_state_profile(profile);
-  }
-
-  for (auto const& [trace, name] : trace_connect_list_link_bw) {
-    simgrid_parse_assert(traces_set_list.find(trace) != traces_set_list.end(),
-                         "<trace_connect kind=\"BANDWIDTH\">: Trace " + trace + " undefined.");
-    auto profile = traces_set_list.at(trace);
-
-    auto link = engine->link_by_name_or_null(name);
-    simgrid_parse_assert(link, "<trace_connect kind=\"BANDWIDTH\">: Link " + name + " undefined.");
-    link->set_bandwidth_profile(profile);
-  }
-
-  for (auto const& [trace, name] : trace_connect_list_link_lat) {
-    simgrid_parse_assert(traces_set_list.find(trace) != traces_set_list.end(),
-                         "<trace_connect kind=\"LATENCY\">: Trace " + trace + " undefined.");
-    auto profile = traces_set_list.at(trace);
-
-    auto link = engine->link_by_name_or_null(name);
-    simgrid_parse_assert(link, "<trace_connect kind=\"LATENCY\">: Link " + name + " undefined.");
-    link->set_latency_profile(profile);
-  }
-
-  simgrid_parse_close();
-}
index 2f1949c..edda286 100644 (file)
@@ -6,6 +6,7 @@
 #include <simgrid/Exception.hpp>
 #include <simgrid/kernel/routing/NetPoint.hpp>
 #include <simgrid/s4u/Engine.hpp>
+#include <simgrid/s4u/Host.hpp>
 #include <xbt/file.hpp>
 #include <xbt/parse_units.hpp>
 
@@ -118,6 +119,42 @@ static void explodesRadical(const std::string& radicals, std::vector<int>* explo
   }
 }
 
+/* Trace related stuff */
+XBT_PRIVATE std::unordered_map<std::string, simgrid::kernel::profile::Profile*>
+    traces_set_list; // shown to sg_platf.cpp
+static std::unordered_map<std::string, std::string> trace_connect_list_host_avail;
+static std::unordered_map<std::string, std::string> trace_connect_list_host_speed;
+static std::unordered_map<std::string, std::string> trace_connect_list_link_avail;
+static std::unordered_map<std::string, std::string> trace_connect_list_link_bw;
+static std::unordered_map<std::string, std::string> trace_connect_list_link_lat;
+
+static void sg_platf_trace_connect(simgrid::kernel::routing::TraceConnectCreationArgs* trace_connect)
+{
+  simgrid_parse_assert(traces_set_list.find(trace_connect->trace) != traces_set_list.end(),
+                       "Cannot connect trace " + trace_connect->trace + " to " + trace_connect->element +
+                           ": trace unknown");
+
+  switch (trace_connect->kind) {
+    case simgrid::kernel::routing::TraceConnectKind::HOST_AVAIL:
+      trace_connect_list_host_avail.try_emplace(trace_connect->trace, trace_connect->element);
+      break;
+    case simgrid::kernel::routing::TraceConnectKind::SPEED:
+      trace_connect_list_host_speed.try_emplace(trace_connect->trace, trace_connect->element);
+      break;
+    case simgrid::kernel::routing::TraceConnectKind::LINK_AVAIL:
+      trace_connect_list_link_avail.try_emplace(trace_connect->trace, trace_connect->element);
+      break;
+    case simgrid::kernel::routing::TraceConnectKind::BANDWIDTH:
+      trace_connect_list_link_bw.try_emplace(trace_connect->trace, trace_connect->element);
+      break;
+    case simgrid::kernel::routing::TraceConnectKind::LATENCY:
+      trace_connect_list_link_lat.try_emplace(trace_connect->trace, trace_connect->element);
+      break;
+    default:
+      simgrid_parse_error("Cannot connect trace " + trace_connect->trace + " to " + trace_connect->element +
+                          ": unknown kind of trace");
+  }
+}
 
 /*
  * All the callback lists that can be overridden anywhere.
@@ -866,4 +903,62 @@ void simgrid_parse()
 {
   bool err = simgrid_parse_lex();
   simgrid_parse_assert(not err, "Flex returned an error code");
+
+  /* Actually connect the traces now that every elements are created */
+  const auto engine = simgrid::s4u::Engine::get_instance();
+
+  for (auto const& [trace, name] : trace_connect_list_host_avail) {
+    simgrid_parse_assert(traces_set_list.find(trace) != traces_set_list.end(),
+                         "<trace_connect kind=\"HOST_AVAIL\">: Trace " + trace + " undefined.");
+    auto profile = traces_set_list.at(trace);
+
+    auto host = engine->host_by_name_or_null(name);
+    simgrid_parse_assert(host, "<trace_connect kind=\"HOST_AVAIL\">: Host " + name + " undefined.");
+    host->set_state_profile(profile);
+  }
+  trace_connect_list_host_avail.clear();
+
+  for (auto const& [trace, name] : trace_connect_list_host_speed) {
+    simgrid_parse_assert(traces_set_list.find(trace) != traces_set_list.end(),
+                         "<trace_connect kind=\"SPEED\">: Trace " + trace + " undefined.");
+    auto profile = traces_set_list.at(trace);
+
+    auto host = engine->host_by_name_or_null(name);
+    simgrid_parse_assert(host, "<trace_connect kind=\"SPEED\">: Host " + name + " undefined.");
+    host->set_speed_profile(profile);
+  }
+  trace_connect_list_host_speed.clear();
+
+  for (auto const& [trace, name] : trace_connect_list_link_avail) {
+    simgrid_parse_assert(traces_set_list.find(trace) != traces_set_list.end(),
+                         "<trace_connect kind=\"LINK_AVAIL\">: Trace " + trace + " undefined.");
+    auto profile = traces_set_list.at(trace);
+
+    auto link = engine->link_by_name_or_null(name);
+    simgrid_parse_assert(link, "<trace_connect kind=\"LINK_AVAIL\">: Link " + name + " undefined.");
+    link->set_state_profile(profile);
+  }
+  trace_connect_list_link_avail.clear();
+
+  for (auto const& [trace, name] : trace_connect_list_link_bw) {
+    simgrid_parse_assert(traces_set_list.find(trace) != traces_set_list.end(),
+                         "<trace_connect kind=\"BANDWIDTH\">: Trace " + trace + " undefined.");
+    auto profile = traces_set_list.at(trace);
+
+    auto link = engine->link_by_name_or_null(name);
+    simgrid_parse_assert(link, "<trace_connect kind=\"BANDWIDTH\">: Link " + name + " undefined.");
+    link->set_bandwidth_profile(profile);
+  }
+  trace_connect_list_link_bw.clear();
+
+  for (auto const& [trace, name] : trace_connect_list_link_lat) {
+    simgrid_parse_assert(traces_set_list.find(trace) != traces_set_list.end(),
+                         "<trace_connect kind=\"LATENCY\">: Trace " + trace + " undefined.");
+    auto profile = traces_set_list.at(trace);
+
+    auto link = engine->link_by_name_or_null(name);
+    simgrid_parse_assert(link, "<trace_connect kind=\"LATENCY\">: Link " + name + " undefined.");
+    link->set_latency_profile(profile);
+  }
+  trace_connect_list_link_lat.clear();
 }
index 45944a4..7453d35 100644 (file)
@@ -6,13 +6,9 @@
 #ifndef SURF_MODEL_H_
 #define SURF_MODEL_H_
 
-#include "src/kernel/resource/profile/Profile.hpp"
-
 #include <set>
 #include <string>
 
-extern XBT_PRIVATE std::unordered_map<std::string, simgrid::kernel::profile::Profile*> traces_set_list;
-
 /** set of hosts for which one want to be notified if they ever restart */
 inline auto& watched_hosts() // avoid static initialization order fiasco
 {
index 9e411ae..fde9679 100644 (file)
@@ -410,7 +410,6 @@ set(KERNEL_SRC
   src/kernel/xml/platf.hpp
   src/kernel/xml/platf_private.hpp
   src/kernel/xml/sg_platf.cpp
-  src/kernel/xml/surfxml_parseplatf.cpp
   src/kernel/xml/surfxml_sax_cb.cpp
   )
 if (Eigen3_FOUND)