- xbt_swag_foreach(process, simdata->process_list) {
- tmp = bprintf("%s\n\t%s", msg, process->name);
- free(msg);
- msg = tmp;
- }
- THROW1(arg_error, 0, "%s", msg);
+ return surf_workstation_model->extension.workstation.
+ get_available_speed(host->host);
+}
+
+int SIMIX_host_get_state(smx_host_t host)
+{
+ xbt_assert((host != NULL), "Invalid parameters (simix host is NULL)");
+
+ return surf_workstation_model->extension.workstation.
+ get_state(host->host);
+}
+
+void* SIMIX_host_self_get_data(void)
+{
+ return SIMIX_host_get_data(SIMIX_host_self());
+}
+
+void SIMIX_host_self_set_data(void *data)
+{
+ SIMIX_host_set_data(SIMIX_host_self(), data);
+}
+
+void* SIMIX_host_get_data(smx_host_t host)
+{
+ xbt_assert((host != NULL), "Invalid parameters (simix host is NULL)");
+
+ return host->data;
+}
+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);
+}
+void SIMIX_host_add_auto_restart_process(smx_host_t host,
+ const char *name,
+ xbt_main_func_t code,
+ void *data,
+ const char *hostname,
+ double kill_time,
+ int argc, char **argv,
+ xbt_dict_t properties,
+ int auto_restart) {
+ if (!host->auto_restart_processes) {
+ 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]);