switch(surf_workstation_model->action_state_get(action->sleep.surf_sleep)){
case SURF_ACTION_FAILED:
- SMX_EXCEPTION(simcall->issuer, host_error, 0, "Host failed");
+ simcall->issuer->context->iwannadie = 1;
+ //SMX_EXCEPTION(simcall->issuer, host_error, 0, "Host failed");
break;
case SURF_ACTION_DONE:
THROW_IMPOSSIBLE;
break;
}
+ if (surf_workstation_model->extension.
+ workstation.get_state(simcall->issuer->smx_host->host) != SURF_RESOURCE_ON) {
+ simcall->issuer->context->iwannadie = 1;
+ }
simcall->process_sleep.result = state;
simcall->issuer->waiting_action = NULL;
SIMIX_simcall_answer(simcall);
+
}
SIMIX_process_sleep_destroy(action);
}
(exit_fun.fun)(exit_fun.arg);
}
}
-void SIMIX_process_on_exit(int_f_pvoid_t fun, void *data) {
- smx_process_t process = SIMIX_process_self();
+void SIMIX_process_on_exit(smx_process_t process, int_f_pvoid_t fun, void *data) {
xbt_assert(process, "current process not found: are you in maestro context ?");
if (!process->on_exit) {
+ XBT_INFO("NEW : %p",process);
process->on_exit = xbt_dynar_new(sizeof(s_smx_process_exit_fun_t), NULL);
}