Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
let *Zones use their own network_model_ instead of the global surf_network_model
[simgrid.git] / src / surf / surf_interface.hpp
index 80ebe02..e1af3a4 100644 (file)
@@ -207,6 +207,42 @@ XBT_PUBLIC void surf_host_model_init_ptask_L07();
  */
 XBT_PUBLIC void surf_storage_model_init_default();
 
+/* --------------------
+ *  Model Descriptions
+ * -------------------- */
+/** \brief Resource model description */
+struct surf_model_description {
+  const char* name;
+  const char* description;
+  void_f_void_t model_init_preparse;
+};
+typedef struct surf_model_description s_surf_model_description_t;
+
+XBT_PUBLIC int find_model_description(s_surf_model_description_t* table, std::string name);
+XBT_PUBLIC void model_help(const char* category, s_surf_model_description_t* table);
+
+#define SIMGRID_REGISTER_PLUGIN(id, desc, init)                       \
+  void simgrid_##id##_plugin_register();                              \
+  void XBT_ATTRIB_CONSTRUCTOR(800) simgrid_##id##_plugin_register() { \
+    simgrid_add_plugin_description(#id, desc, init);                  \
+  }
+
+XBT_PUBLIC void simgrid_add_plugin_description(const char* name, const char* description, void_f_void_t init_fun);
+
+/** @brief The list of all available plugins */
+XBT_PUBLIC_DATA s_surf_model_description_t* surf_plugin_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 s_surf_model_description_t surf_optimization_mode_description[];
+/** @brief The list of all cpu models (pick one with --cfg=cpu/model) */
+XBT_PUBLIC_DATA s_surf_model_description_t surf_cpu_model_description[];
+/** @brief The list of all network models (pick one with --cfg=network/model) */
+XBT_PUBLIC_DATA s_surf_model_description_t surf_network_model_description[];
+/** @brief The list of all storage models (pick one with --cfg=storage/model) */
+XBT_PUBLIC_DATA s_surf_model_description_t surf_storage_model_description[];
+/** @brief The list of all host models (pick one with --cfg=host/model:) */
+XBT_PUBLIC_DATA s_surf_model_description_t surf_host_model_description[];
+
 /**********
  * Action *
  **********/