Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
model-checker : move functions about snapshot comparison in a separate file mc_compare.c
[simgrid.git] / src / simix / smx_host.c
index cc4273b..a247d60 100644 (file)
@@ -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)