+#if HAVE_SMPI
+#include "src/smpi/include/smpi_request.hpp"
+#endif
+
+SIMGRID_REGISTER_PLUGIN(host_dvfs, "Dvfs support", &sg_host_dvfs_plugin_init)
+
+static simgrid::config::Flag<double> cfg_sampling_rate("plugin/dvfs/sampling-rate", {"plugin/dvfs/sampling_rate"},
+ "How often should the dvfs plugin check whether the frequency needs to be changed?", 0.1,
+ [](double val){if (val != 0.1) sg_host_dvfs_plugin_init();});
+
+static simgrid::config::Flag<std::string> cfg_governor("plugin/dvfs/governor",
+ "Which Governor should be used that adapts the CPU frequency?",
+ "performance",
+
+ std::map<std::string, std::string>({
+#if HAVE_SMPI
+ {"adagio", "TODO: Doc"},
+#endif
+ {"conservative", "TODO: Doc"}, {"ondemand", "TODO: Doc"},
+ {"performance", "TODO: Doc"}, {"powersave", "TODO: Doc"},
+ }),
+
+ [](const std::string& val) {
+ if (val != "performance")
+ sg_host_dvfs_plugin_init();
+ });
+
+static simgrid::config::Flag<int>
+ cfg_min_pstate("plugin/dvfs/min-pstate", {"plugin/dvfs/min_pstate"},
+ "Which pstate is the minimum (and hence fastest) pstate for this governor?", 0);
+
+static const int max_pstate_not_limited = -1;
+static simgrid::config::Flag<int>
+ cfg_max_pstate("plugin/dvfs/max-pstate", {"plugin/dvfs/max_pstate"},
+ "Which pstate is the maximum (and hence slowest) pstate for this governor?", max_pstate_not_limited);