X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e98908d4e3ea9f355370a4f0a9db15b9593b7eb1..be27c3513d2b7d273749db733659600b10dc0a54:/src/simgrid/host.cpp diff --git a/src/simgrid/host.cpp b/src/simgrid/host.cpp index 5e1656f9a1..9d3255bd83 100644 --- a/src/simgrid/host.cpp +++ b/src/simgrid/host.cpp @@ -64,9 +64,9 @@ int SIMIX_HOST_LEVEL; int ROUTING_HOST_LEVEL; int USER_HOST_LEVEL; -#include "src/msg/msg_private.h" // MSG_host_priv_free. FIXME: killme -#include "src/simdag/simdag_private.h" // __SD_workstation_destroy. FIXME: killme -#include "src/simix/smx_host_private.h" // SIMIX_host_destroy. FIXME: killme +#include "src/msg/msg_private.h" // MSG_host_priv_free. FIXME: killme by initializing that level in msg when used +#include "src/simdag/simdag_private.h" // __SD_workstation_destroy. FIXME: killme by initializing that level in simdag when used +#include "src/simix/smx_host_private.h" // SIMIX_host_destroy. FIXME: killme by initializing that level in simix when used #include "src/surf/cpu_interface.hpp" #include "src/surf/surf_routing.hpp" @@ -137,8 +137,8 @@ double sg_host_get_available_speed(sg_host_t host){ /** @brief Returns the state of a host. * @return 1 if the host is active or 0 if it has crashed. */ -int sg_host_get_state(sg_host_t host) { - return surf_host_get_state(surf_host_resource_priv(host)); +int sg_host_is_on(sg_host_t host) { + return host->p_cpu->isOn(); } /** @brief Returns the total energy consumed by the host (in Joules). @@ -154,7 +154,7 @@ double sg_host_get_consumed_energy(sg_host_t host) { * See also @ref SURF_plugin_energy. */ int sg_host_get_nb_pstates(sg_host_t host) { - return surf_host_get_nb_pstates(host); + return host->p_cpu->getNbPStates(); } /** @brief Gets the pstate at which that host currently runs. @@ -162,7 +162,14 @@ int sg_host_get_nb_pstates(sg_host_t host) { * See also @ref SURF_plugin_energy. */ int sg_host_get_pstate(sg_host_t host) { - return surf_host_get_pstate(host); + return host->getPState(); +} +/** @brief Sets the pstate at which that host should run. + * + * See also @ref SURF_plugin_energy. + */ +void sg_host_set_pstate(sg_host_t host,int pstate) { + host->setPState(pstate); } namespace simgrid { @@ -177,19 +184,27 @@ Host::~Host() } /** Start the host if it is off */ -void Host::on() +void Host::turnOn() { simgrid::simix::kernel(std::bind(SIMIX_host_on, this)); } /** Stop the host if it is on */ -void Host::off() +void Host::turnOff() { /* Go to that function to follow the code flow through the simcall barrier */ if (0) simcall_HANDLER_host_off(&SIMIX_process_self()->simcall, this); simgrid::simix::simcall(SIMCALL_HOST_OFF, this); } +bool Host::isOn() { + return p_cpu->isOn(); +} +bool Host::isOff() { + return ! p_cpu->isOn(); +} + + /** Get the properties assigned to a host */ xbt_dict_t Host::getProperties() { @@ -240,25 +255,33 @@ Host* Host::by_name_or_create(const char* name) return host; } -/** Set the pstate at which the host should run */ -void Host::setPstate(int pstate_index) +/** @brief Set the pstate at which the host should run */ +void Host::setPState(int pstate_index) { - simgrid::simix::kernel( - std::bind(SIMIX_host_set_pstate, this, pstate_index)); + simgrid::simix::kernel(std::bind( + &simgrid::surf::Cpu::setPState, p_cpu, pstate_index + )); +} +/** @brief Retrieve the pstate at which the host is currently running */ +int Host::getPState() +{ + return p_cpu->getPState(); } /** Get the amount of watt dissipated at the given pstate when the host is idling */ double Host::getWattMinAt(int pstate) { - return simgrid::simix::kernel( - std::bind(SIMIX_host_get_wattmin_at, this, pstate)); + return simgrid::simix::kernel(std::bind( + surf_host_get_wattmin_at, this, pstate + )); } /** Get the amount of watt dissipated at the given pstate when the host burns CPU at 100% */ double Host::getWattMaxAt(int pstate) { - return simgrid::simix::kernel( - std::bind(SIMIX_host_get_wattmax_at, this, pstate)); + return simgrid::simix::kernel(std::bind( + surf_host_get_wattmax_at, this, pstate + )); } void Host::getParams(vm_params_t params)