X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/5d5b1f33a75eda059dc0d5acc6c0fac5ad532f30..77e63efea0d0c200b85f224c2faf9de94d98e83a:/src/simix/smx_host.c diff --git a/src/simix/smx_host.c b/src/simix/smx_host.c index cc4273b864..a247d6096a 100644 --- a/src/simix/smx_host.c +++ b/src/simix/smx_host.c @@ -13,8 +13,6 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_host, simix, "Logging specific to SIMIX (hosts)"); -xbt_dict_t watched_hosts_lib; - static void SIMIX_execution_finish(smx_action_t action); /** @@ -181,12 +179,7 @@ void _SIMIX_host_free_process_arg(void *); void _SIMIX_host_free_process_arg(void *data) { smx_process_arg_t arg = *(void**)data; - int i; xbt_free(arg->name); - for (i = 0; i < arg->argc; i++) { - xbt_free(arg->argv[i]); - } - xbt_free(arg->argv); xbt_free(arg); } /** @@ -210,19 +203,20 @@ void SIMIX_host_add_auto_restart_process(smx_host_t host, host->auto_restart_processes = xbt_dynar_new(sizeof(smx_process_arg_t),_SIMIX_host_free_process_arg); } smx_process_arg_t arg = xbt_new(s_smx_process_arg_t,1); - arg->name = xbt_strdup(name); arg->code = code; arg->data = data; arg->hostname = hostname; arg->kill_time = kill_time; arg->argc = argc; + arg->argv = xbt_new(char*,argc + 1); int i; for (i = 0; i < argc; i++) { arg->argv[i] = xbt_strdup(argv[i]); } + arg->argv[argc] = NULL; arg->properties = properties; arg->auto_restart = auto_restart; @@ -275,6 +269,14 @@ void SIMIX_host_restart_processes(smx_host_t host) xbt_dynar_reset(host->auto_restart_processes); } +void SIMIX_host_autorestart(smx_host_t host) +{ + if(simix_global->autorestart) + simix_global->autorestart(host); + else + xbt_die("No function for simix_global->autorestart"); +} + void SIMIX_host_set_data(smx_host_t host, void *data) { xbt_assert((host != NULL), "Invalid parameters"); @@ -352,19 +354,14 @@ smx_action_t SIMIX_host_parallel_execute( const char *name, void SIMIX_host_execution_destroy(smx_action_t action) { - int destroyed=0; XBT_DEBUG("Destroy action %p", action); - if (action->execution.surf_exec) { - destroyed = surf_workstation_model->action_unref(action->execution.surf_exec); + surf_workstation_model->action_unref(action->execution.surf_exec); action->execution.surf_exec = NULL; } - - if (destroyed) { - xbt_free(action->name); - xbt_mallocator_release(simix_global->action_mallocator, action); - } + xbt_free(action->name); + xbt_mallocator_release(simix_global->action_mallocator, action); } void SIMIX_host_execution_cancel(smx_action_t action)