extern XBT_PRIVATE double sg_weight_S_parameter;
extern XBT_PRIVATE std::vector<std::string> surf_path;
extern XBT_PRIVATE std::unordered_map<std::string, simgrid::kernel::profile::Profile*> traces_set_list;
extern XBT_PRIVATE double sg_weight_S_parameter;
extern XBT_PRIVATE std::vector<std::string> surf_path;
extern XBT_PRIVATE std::unordered_map<std::string, simgrid::kernel::profile::Profile*> traces_set_list;
-extern XBT_PRIVATE std::set<std::string, std::less<>> watched_hosts;
+
+/** set of hosts for which one want to be notified if they ever restart */
+inline auto& watched_hosts() // avoid static initialization order fiasco
+{
+ static std::set<std::string, std::less<>> value;
+ return value;
+}
- * @brief Initializes the platform with the current best network and cpu models at hand
+ * @brief Initializes the VM model used in the platform
+ *
+ * A VM model depends on the physical CPU model to share the resources inside the VM
+ * It will also creates the CPU model for actions running inside the VM
-XBT_PUBLIC int find_model_description(const std::vector<surf_model_description_t>& table, const std::string& name);
+XBT_PUBLIC const surf_model_description_t* find_model_description(const std::vector<surf_model_description_t>& table,
+ const std::string& name);
XBT_PUBLIC void model_help(const char* category, const std::vector<surf_model_description_t>& table);
#define SIMGRID_REGISTER_PLUGIN(id, desc, init) \
static void XBT_ATTRIB_CONSTRUCTOR(800) _XBT_CONCAT3(simgrid_, id, _plugin_register)() \
{ \
XBT_PUBLIC void model_help(const char* category, const std::vector<surf_model_description_t>& table);
#define SIMGRID_REGISTER_PLUGIN(id, desc, init) \
static void XBT_ATTRIB_CONSTRUCTOR(800) _XBT_CONCAT3(simgrid_, id, _plugin_register)() \
{ \
-XBT_PUBLIC_DATA std::vector<surf_model_description_t>* surf_plugin_description;
+inline auto& surf_plugin_description() // Function to avoid static initialization order fiasco
+{
+ static std::vector<surf_model_description_t> plugin_description_table;
+ return plugin_description_table;
+}
/** @brief The list of all available optimization modes (both for cpu and networks).
* These optimization modes can be set using --cfg=cpu/optim:... and --cfg=network/optim:... */
XBT_PUBLIC_DATA const std::vector<surf_model_description_t> surf_optimization_mode_description;
/** @brief The list of all available optimization modes (both for cpu and networks).
* These optimization modes can be set using --cfg=cpu/optim:... and --cfg=network/optim:... */
XBT_PUBLIC_DATA const std::vector<surf_model_description_t> surf_optimization_mode_description;
XBT_PUBLIC_DATA const std::vector<surf_model_description_t> surf_network_model_description;
/** @brief The list of all disk models (pick one with --cfg=disk/model) */
XBT_PUBLIC_DATA const std::vector<surf_model_description_t> surf_disk_model_description;
XBT_PUBLIC_DATA const std::vector<surf_model_description_t> surf_network_model_description;
/** @brief The list of all disk models (pick one with --cfg=disk/model) */
XBT_PUBLIC_DATA const std::vector<surf_model_description_t> surf_disk_model_description;
/** @brief The list of all host models (pick one with --cfg=host/model:) */
XBT_PUBLIC_DATA const std::vector<surf_model_description_t> surf_host_model_description;
/** @brief The list of all host models (pick one with --cfg=host/model:) */
XBT_PUBLIC_DATA const std::vector<surf_model_description_t> surf_host_model_description;