#include "src/internal_config.h"
-XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_dvfs, smpi, "Logging specific to SMPI (experimental DVFS support)");
+#if SMPI_FORTRAN
+
+// FIXME: rework these bindings, or kill them completely
+
+#if defined(__alpha__) || defined(__sparc64__) || defined(__x86_64__) || defined(__ia64__)
+typedef int integer;
+#else
+typedef long int integer;
+#endif
+typedef double doublereal;
/**
* @brief Return the speed of the processor (in flop/s) at a given pstate
* @param pstate_index pstate to test
* @return Returns the processor speed associated with pstate_index
*/
-double smpi_get_host_power_peak_at(int pstate_index)
+extern "C" XBT_PUBLIC doublereal smpi_get_host_power_peak_at_(integer* pstate_index);
+doublereal smpi_get_host_power_peak_at_(integer *pstate_index)
{
- return sg_host_self()->get_pstate_speed(pstate_index);
+ return static_cast<doublereal>(sg_host_self()->get_pstate_speed(static_cast<int>(*pstate_index)));
}
/**
*
* @return Returns the current processor speed
*/
-double smpi_get_host_current_power_peak()
+extern "C" XBT_PUBLIC doublereal smpi_get_host_current_power_peak_();
+doublereal smpi_get_host_current_power_peak_()
{
- return sg_host_self()->get_speed();
+ return static_cast<doublereal>(sg_host_self()->get_speed());
}
/**
* @brief Return the number of pstates defined for the current host
*/
-int smpi_get_host_nb_pstates()
+extern "C" XBT_PUBLIC integer smpi_get_host_nb_pstates_();
+integer smpi_get_host_nb_pstates_()
{
- return sg_host_get_nb_pstates(sg_host_self());
+ return static_cast<integer>(sg_host_self()->get_pstate_count());
}
/**
*
* @param pstate_index pstate to switch to
*/
-void smpi_set_host_pstate(int pstate_index)
+extern "C" XBT_PUBLIC void smpi_set_host_pstate_(integer* pstate_index);
+void smpi_set_host_pstate_(integer *pstate_index)
{
- sg_host_set_pstate(sg_host_self(), pstate_index);
-}
-/** @brief Gets the pstate at which the processor currently running */
-int smpi_get_host_pstate() {
- return sg_host_get_pstate(sg_host_self());
+ sg_host_set_pstate(sg_host_self(), (static_cast<int>(*pstate_index)));
}
+/**
+ * @brief Gets the pstate at which the processor currently running
+ */
+extern "C" XBT_PUBLIC integer smpi_get_host_pstate_();
+integer smpi_get_host_pstate_()
+{
+ return static_cast<integer>(sg_host_get_pstate(sg_host_self()));
+}
/**
* @brief Return the total energy consumed by a host (in Joules)
*
* @return Returns the consumed energy
*/
-double smpi_get_host_consumed_energy() {
- return sg_host_get_consumed_energy(sg_host_self());
-}
-
-#if SMPI_FORTRAN
-
-#if defined(__alpha__) || defined(__sparc64__) || defined(__x86_64__) || defined(__ia64__)
-typedef int integer;
-#else
-typedef long int integer;
-#endif
-typedef double doublereal;
-
-extern "C" XBT_PUBLIC doublereal smpi_get_host_power_peak_at_(integer* pstate_index);
-doublereal smpi_get_host_power_peak_at_(integer *pstate_index)
-{
- return static_cast<doublereal>(sg_host_self()->get_pstate_speed((int)*pstate_index));
-}
-
-extern "C" XBT_PUBLIC doublereal smpi_get_host_current_power_peak_();
-doublereal smpi_get_host_current_power_peak_()
-{
- return sg_host_self()->get_speed();
-}
-
-extern "C" XBT_PUBLIC integer smpi_get_host_nb_pstates_();
-integer smpi_get_host_nb_pstates_()
-{
- return static_cast<integer>(sg_host_self()->get_pstate_count());
-}
-
-extern "C" XBT_PUBLIC void smpi_set_host_pstate_(integer* pstate_index);
-void smpi_set_host_pstate_(integer *pstate_index)
-{
- sg_host_set_pstate(sg_host_self(), (static_cast<int>(*pstate_index)));
-}
-
extern "C" XBT_PUBLIC doublereal smpi_get_host_consumed_energy_();
doublereal smpi_get_host_consumed_energy_()
{