X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b613017b9046c943d75d8e4547ebc950b4aacbdd..19b3962253112b19308537bc2400de141c119d99:/src/s4u/s4u_host.cpp diff --git a/src/s4u/s4u_host.cpp b/src/s4u/s4u_host.cpp index 284d0d69be..7846f76df3 100644 --- a/src/s4u/s4u_host.cpp +++ b/src/s4u/s4u_host.cpp @@ -1,5 +1,4 @@ -/* Copyright (c) 2006-2014. The SimGrid Team. - * All rights reserved. */ +/* Copyright (c) 2006-2017. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -10,9 +9,9 @@ #include -#include "simgrid/s4u/engine.hpp" -#include "simgrid/s4u/host.hpp" -#include "simgrid/s4u/storage.hpp" +#include "simgrid/s4u/Engine.hpp" +#include "simgrid/s4u/Host.hpp" +#include "simgrid/s4u/Storage.hpp" #include "simgrid/simix.hpp" #include "src/kernel/routing/NetPoint.hpp" #include "src/msg/msg_private.h" @@ -24,8 +23,6 @@ XBT_LOG_EXTERNAL_CATEGORY(surf_route); -std::map host_list; // FIXME: move it to Engine - int USER_HOST_LEVEL = -1; namespace simgrid { @@ -36,6 +33,8 @@ template class Extendable; namespace s4u { +std::map host_list; // FIXME: move it to Engine + simgrid::xbt::signal Host::onCreation; simgrid::xbt::signal Host::onDestruction; simgrid::xbt::signal Host::onStateChange; @@ -128,6 +127,20 @@ int Host::pstatesCount() const { return this->pimpl_cpu->getNbPStates(); } +/** + * \brief Return the list of actors attached to an host. + * + * \param whereto a vector in which we should push actors living on that host + */ +void Host::actorList(std::vector* whereto) +{ + smx_actor_t actor = NULL; + xbt_swag_foreach(actor, this->extension()->process_list) + { + whereto->push_back(actor->ciface()); + } +} + /** * \brief Find a route toward another host * @@ -195,22 +208,15 @@ void Host::setProperty(const char*key, const char *value){ } /** Get the processes attached to the host */ -xbt_swag_t Host::processes() -{ - return simgrid::simix::kernelImmediate([this] { - return this->extension()->process_list; - }); -} - -/** Get the peak power of a host */ -double Host::getPstateSpeedCurrent() +void Host::processes(std::vector* list) { - return simgrid::simix::kernelImmediate([this] { - return this->pimpl_cpu->getPstateSpeedCurrent(); - }); + smx_actor_t actor = NULL; + xbt_swag_foreach(actor, this->extension()->process_list) { + list->push_back(actor->iface()); + } } -/** Get one power peak (in flops/s) of a host at a given pstate */ +/** @brief Get the peak processor speed (in flops/s), at the specified pstate */ double Host::getPstateSpeed(int pstate_index) { return simgrid::simix::kernelImmediate([this, pstate_index] { @@ -218,10 +224,11 @@ double Host::getPstateSpeed(int pstate_index) }); } -/** @brief Get the speed of the cpu associated to a host */ +/** @brief Get the peak processor speed (in flops/s), at the current pstate */ double Host::speed() { return pimpl_cpu->getSpeed(1.0); } + /** @brief Returns the number of core of the processor. */ int Host::coreCount() { return pimpl_cpu->coreCount();