X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d77b02b38c73cf34e18a45339d3c3cf8cd23c72b..faedb72df7cffcf486677835fdd57d319a010bb1:/src/simgrid/host.cpp diff --git a/src/simgrid/host.cpp b/src/simgrid/host.cpp index faf160f219..0ee923f7bf 100644 --- a/src/simgrid/host.cpp +++ b/src/simgrid/host.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2013-2017. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2013-2018. 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. */ @@ -12,7 +12,7 @@ #include "xbt/Extendable.hpp" #include "xbt/dict.h" -#include "src/kernel/routing/NetPoint.hpp" +#include "simgrid/kernel/routing/NetPoint.hpp" #include "src/simix/smx_host_private.hpp" #include "src/surf/HostImpl.hpp" #include "src/surf/cpu_interface.hpp" @@ -37,7 +37,7 @@ size_t sg_host_count() */ sg_host_t *sg_host_list() { xbt_assert(sg_host_count() > 0, "There is no host!"); - std::vector hosts = simgrid::s4u::Engine::getInstance()->getHostList(); + std::vector hosts = simgrid::s4u::Engine::getInstance()->getAllHosts(); sg_host_t* res = (sg_host_t*)malloc(sizeof(sg_host_t) * hosts.size()); memcpy(res, hosts.data(), sizeof(sg_host_t) * hosts.size()); @@ -75,7 +75,7 @@ xbt_dynar_t sg_hosts_as_dynar() { xbt_dynar_t res = xbt_dynar_new(sizeof(sg_host_t),nullptr); - std::vector list = simgrid::s4u::Engine::getInstance()->getHostList(); + std::vector list = simgrid::s4u::Engine::getInstance()->getAllHosts(); for (auto const& host : list) { if (host && host->pimpl_netpoint && host->pimpl_netpoint->isHost()) @@ -129,6 +129,17 @@ double sg_host_speed(sg_host_t host) return host->getSpeed(); } +/** \brief Return the speed of the processor (in flop/s) at a given pstate. See also @ref plugin_energy. + * + * \param host host to test + * \param pstate_index pstate to test + * \return Returns the processor speed associated with pstate_index + */ +double sg_host_get_pstate_speed(sg_host_t host, int pstate_index) +{ + return host->getPstateSpeed(pstate_index); +} + /** \ingroup m_host_management * \brief Return the number of cores. * @@ -309,4 +320,23 @@ void sg_host_dump(sg_host_t host) } } +/** \brief Return the list of actors attached to an host. + * + * \param host a host + * \param whereto a dynar in which we should push actors living on that host + */ +void sg_host_get_actor_list(sg_host_t host, xbt_dynar_t whereto) +{ + for (auto& actor : host->extension()->process_list) { + s4u_Actor* p = actor.ciface(); + xbt_dynar_push(whereto, &p); + } +} + +sg_host_t sg_host_self() +{ + smx_actor_t process = SIMIX_process_self(); + return (process == nullptr) ? nullptr : process->host; +} + } // extern "C"