X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d90edfc166207c7c7372bfd4f58c6392b8fd4eef..757c0f8844ae51c9e9a9085165c5dc46e5d1ce5c:/src/msg/msg_host.c diff --git a/src/msg/msg_host.c b/src/msg/msg_host.c index 92f2cf1009..086d9bf70f 100644 --- a/src/msg/msg_host.c +++ b/src/msg/msg_host.c @@ -8,6 +8,9 @@ #include "msg/msg_mailbox.h" #include "xbt/sysdep.h" #include "xbt/log.h" +#include "simgrid/simix.h" + +XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(msg); /** @addtogroup m_host_management * \htmlonly \endhtmlonly @@ -27,8 +30,10 @@ m_host_t __MSG_host_create(smx_host_t workstation) { const char *name = SIMIX_host_get_name(workstation); m_host_t host = xbt_new0(s_m_host_t, 1); + s_msg_vm_t vm; // simply to compute the offset host->smx_host = workstation; + host->vms = xbt_swag_new(xbt_swag_offset(vm,host_vms_hookup)); #ifdef MSG_USE_DEPRECATED int i; @@ -46,7 +51,6 @@ m_host_t __MSG_host_create(smx_host_t workstation) } #endif - simcall_host_set_data(workstation, host); xbt_lib_set(host_lib,name,MSG_HOST_LEVEL,host); return host; @@ -61,16 +65,9 @@ m_host_t __MSG_host_create(smx_host_t workstation) */ m_host_t MSG_get_host_by_name(const char *name) { - smx_host_t simix_h = NULL; - simix_h = simcall_host_get_by_name(name); - - if (simix_h == NULL) - return NULL; - - return (m_host_t) simcall_host_get_data(simix_h); + return (m_host_t) xbt_lib_get_or_null(host_lib,name,MSG_HOST_LEVEL); } - /** \ingroup m_host_management * * \brief Set the user data of a #m_host_t. @@ -94,7 +91,6 @@ MSG_error_t MSG_host_set_data(m_host_t host, void *data) */ void *MSG_host_get_data(m_host_t host) { - return SIMIX_host_get_data(host->smx_host); } @@ -128,7 +124,11 @@ void __MSG_host_destroy(m_host_t host) { if (msg_global->max_channel > 0) free(host->mailboxes); #endif - + if (xbt_swag_size(host->vms) > 0 ) { + XBT_VERB("Host %s shut down, but it still hosts %d VMs. They will be leaked.", + MSG_host_get_name(host),xbt_swag_size(host->vms)); + } + xbt_swag_free(host->vms); free(host); }