X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f3c1ebdb5d5e4370a0efd5f4c0dd4f7131fe8370..967421ad9a8dcd567206f2c398a30c08c9507a81:/src/surf/surf.c diff --git a/src/surf/surf.c b/src/surf/surf.c index 203febace3..be19fb7433 100644 --- a/src/surf/surf.c +++ b/src/surf/surf.c @@ -9,6 +9,7 @@ #include "surf_private.h" #include "xbt/module.h" #include "mc/mc.h" +#include "simix/smx_host_private.h" #include "surf/surf_resource.h" #include "xbt/xbt_os_thread.h" @@ -382,6 +383,7 @@ void surf_init(int *argc, char **argv) as_router_lib = xbt_lib_new(); storage_lib = xbt_lib_new(); storage_type_lib = xbt_lib_new(); + watched_hosts_lib = xbt_dict_new(); XBT_DEBUG("Add routing levels"); ROUTING_HOST_LEVEL = xbt_lib_add_level(host_lib,routing_asr_host_free); @@ -470,6 +472,8 @@ void surf_exit(void) xbt_lib_free(&storage_lib); xbt_lib_free(&storage_type_lib); + xbt_dict_free(&watched_hosts_lib); + tmgr_finalize(); surf_parse_lex_destroy(); surf_parse_free_callbacks(); @@ -695,3 +699,22 @@ void surf_set_nthreads(int nthreads) { surf_nthreads = nthreads; } + +void surf_watched_hosts(void) +{ + char *key; + void *host; + xbt_dict_cursor_t cursor; + + XBT_DEBUG("Check for host SURF_RESOURCE_ON on watched_hosts_lib"); + xbt_dict_foreach(watched_hosts_lib,cursor,key,host) + { + if(SIMIX_host_get_state(host) == SURF_RESOURCE_ON){ + XBT_INFO("Restart processes on host: %s",SIMIX_host_get_name(host)); + SIMIX_host_autorestart(host); + xbt_dict_remove(watched_hosts_lib,key); + } + else + XBT_DEBUG("See SURF_RESOURCE_OFF on host: %s",key); + } +}