X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ce9554b1de3402ba9c6b647f502e09d7ce4b6d2b..2e501076bf39bf43b598954f040b453fedf49f4c:/src/simgrid/host.cpp diff --git a/src/simgrid/host.cpp b/src/simgrid/host.cpp index 14ef0cd773..0d2785ce03 100644 --- a/src/simgrid/host.cpp +++ b/src/simgrid/host.cpp @@ -6,7 +6,6 @@ #include "xbt/dict.h" #include "simgrid/host.h" -#include "surf/surf_routing.h" // SIMIX_HOST_LEVEL and friends FIXME: make private here #include "surf/surf.h" // routing_get_network_element_type FIXME:killme sg_host_t sg_host_by_name(const char *name){ @@ -43,7 +42,7 @@ int SD_HOST_LEVEL; int SIMIX_HOST_LEVEL; int ROUTING_HOST_LEVEL; int SURF_CPU_LEVEL; - +int USER_HOST_LEVEL; #include "src/msg/msg_private.h" // MSG_host_priv_free. FIXME: killme #include "src/simdag/private.h" // __SD_workstation_destroy. FIXME: killme @@ -58,14 +57,24 @@ static XBT_INLINE void routing_asr_host_free(void *p) { delete static_cast(p); } - -void sg_host_init() { // FIXME: only add the needed levels +void sg_host_init() { MSG_HOST_LEVEL = xbt_lib_add_level(host_lib, (void_f_pvoid_t) __MSG_host_priv_free); SD_HOST_LEVEL = xbt_lib_add_level(host_lib,__SD_workstation_destroy); SIMIX_HOST_LEVEL = xbt_lib_add_level(host_lib,SIMIX_host_destroy); SURF_CPU_LEVEL = xbt_lib_add_level(host_lib,surf_cpu_free); ROUTING_HOST_LEVEL = xbt_lib_add_level(host_lib,routing_asr_host_free); + USER_HOST_LEVEL = xbt_lib_add_level(host_lib,NULL); +} +// ========== User data Layer ========== +void *sg_host_user(sg_host_t host) { + return xbt_lib_get_level(host, USER_HOST_LEVEL); +} +void sg_host_user_set(sg_host_t host, void* userdata) { + xbt_lib_set(host_lib,host->key,USER_HOST_LEVEL,userdata); +} +void sg_host_user_destroy(sg_host_t host) { + xbt_lib_unset(host_lib,host->key,USER_HOST_LEVEL,1); } // ========== MSG Layer ============== @@ -139,5 +148,29 @@ int sg_host_get_core(sg_host_t 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)); + return surf_host_get_state(surf_host_resource_priv(host)); +} + +/** @brief Returns the total energy consumed by the host (in Joules). + * + * See also @ref SURF_plugin_energy. + */ +double sg_host_get_consumed_energy(sg_host_t host) { + return surf_host_get_consumed_energy(host); +} + +/** @brief Returns the number of power states for a host. + * + * See also @ref SURF_plugin_energy. + */ +int sg_host_get_nb_pstates(sg_host_t host) { + return surf_host_get_nb_pstates(host); +} + +/** @brief Gets the pstate at which that host currently runs. + * + * See also @ref SURF_plugin_energy. + */ +int sg_host_get_pstate(sg_host_t host) { + return surf_host_get_pstate(host); }