X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/95f6003dd91bcac6493664491e831de740ebffd3..be27c3513d2b7d273749db733659600b10dc0a54:/src/simgrid/host.cpp diff --git a/src/simgrid/host.cpp b/src/simgrid/host.cpp index df6a15bf29..9d3255bd83 100644 --- a/src/simgrid/host.cpp +++ b/src/simgrid/host.cpp @@ -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)