X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/eaa222acd330e2c3e2c517c5eaab82c8fcb8a4c1..8d51fbcc2374aec305440e6456aee54c0a2df5d3:/src/simgrid/host.cpp diff --git a/src/simgrid/host.cpp b/src/simgrid/host.cpp index e8ea892a41..f4a89018df 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,15 +12,13 @@ #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" XBT_LOG_NEW_DEFAULT_SUBCATEGORY(sg_host, sd, "Logging specific to sg_hosts"); -extern "C" { - size_t sg_host_count() { return simgrid::s4u::Engine::getInstance()->getHostCount(); @@ -47,7 +45,7 @@ sg_host_t *sg_host_list() { const char *sg_host_get_name(sg_host_t host) { - return host->getCname(); + return host->get_cname(); } void* sg_host_extension_get(sg_host_t host, size_t ext) @@ -67,8 +65,8 @@ sg_host_t sg_host_by_name(const char *name) static int hostcmp_voidp(const void* pa, const void* pb) { - return strcmp((*static_cast(pa))->getCname(), - (*static_cast(pb))->getCname()); + return strcmp((*static_cast(pa))->get_cname(), + (*static_cast(pb))->get_cname()); } xbt_dynar_t sg_hosts_as_dynar() @@ -78,7 +76,7 @@ xbt_dynar_t sg_hosts_as_dynar() std::vector list = simgrid::s4u::Engine::getInstance()->getAllHosts(); for (auto const& host : list) { - if (host && host->pimpl_netpoint && host->pimpl_netpoint->isHost()) + if (host && host->pimpl_netpoint && host->pimpl_netpoint->is_host()) xbt_dynar_push(res, &host); } xbt_dynar_sort(res, hostcmp_voidp); @@ -105,19 +103,17 @@ xbt_dict_t sg_host_get_mounted_storage_list(sg_host_t host){ for (auto const& elm : host->getMountedStorages()) { const char* mount_name = elm.first.c_str(); sg_storage_t storage = elm.second; - xbt_dict_set(res, mount_name, (void*)storage->getCname(), nullptr); + xbt_dict_set(res, mount_name, (void*)storage->get_cname(), nullptr); } return res; } xbt_dynar_t sg_host_get_attached_storage_list(sg_host_t host){ - std::vector* storage_vector = new std::vector(); xbt_dynar_t storage_dynar = xbt_dynar_new(sizeof(const char*), nullptr); - host->getAttachedStorages(storage_vector); - for (auto const& name : *storage_vector) + std::vector storage_vector = host->get_attached_storages(); + for (auto const& name : storage_vector) xbt_dynar_push(storage_dynar, &name); - delete storage_vector; return storage_dynar; } @@ -129,6 +125,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. * @@ -142,7 +149,7 @@ int sg_host_core_count(sg_host_t host) double sg_host_get_available_speed(sg_host_t host) { - return host->pimpl_cpu->getAvailableSpeed(); + return host->pimpl_cpu->get_available_speed(); } /** @brief Returns the number of power states for a host. @@ -296,7 +303,7 @@ double sg_host_route_bandwidth(sg_host_t from, sg_host_t to) /** @brief Displays debugging information about a host */ void sg_host_dump(sg_host_t host) { - XBT_INFO("Displaying host %s", host->getCname()); + XBT_INFO("Displaying host %s", host->get_cname()); XBT_INFO(" - speed: %.0f", host->getSpeed()); XBT_INFO(" - available speed: %.2f", sg_host_get_available_speed(host)); std::map* props = host->getProperties(); @@ -309,4 +316,21 @@ void sg_host_dump(sg_host_t host) } } -} // extern "C" +/** \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; +}