case SIMIX_ACTION_COMMUNICATE:
xbt_fifo_remove(process->comms, process->waiting_action);
- SIMIX_comm_destroy(process->waiting_action);
+ SIMIX_comm_cancel(process->waiting_action);
break;
case SIMIX_ACTION_SLEEP:
case SIMIX_ACTION_IO:
SIMIX_io_destroy(process->waiting_action);
break;
+
+ /* **************************************/
+ /* TUTORIAL: New API */
+ case SIMIX_ACTION_NEW_API:
+ SIMIX_new_api_destroy(process->waiting_action);
+ break;
+ /* **************************************/
+
}
}
if(!xbt_dynar_member(simix_global->process_to_run, &(process)) && process != issuer) {
void SIMIX_pre_process_sleep(smx_simcall_t simcall)
{
- if (MC_IS_ENABLED) {
+ if (MC_is_active()) {
MC_process_clock_add(simcall->issuer, simcall->process_sleep.duration);
simcall->process_sleep.result = SIMIX_DONE;
SIMIX_simcall_answer(simcall);
self->doexception = 0;
SMX_THROW();
}
+
+ /* Ignore some local variables from xbt/ex.c for stacks comparison */
+ if(MC_is_active()){
+ MC_ignore_stack("ctx", "SIMIX_process_yield");
+ MC_ignore_stack("_throw_ctx", "SIMIX_process_yield");
+ MC_ignore_stack("_log_ev", "SIMIX_process_yield");
+ }
}
/* callback: context fetching */
void SIMIX_process_exception_terminate(xbt_ex_t * e)
{
xbt_ex_display(e);
- abort();
+ xbt_abort();
}
smx_context_t SIMIX_process_get_context(smx_process_t p) {
* \brief Restart a process.
* Restart a process, starting it again from the beginning.
*/
-void SIMIX_process_restart(smx_process_t process, smx_process_t issuer) {
+smx_process_t SIMIX_process_restart(smx_process_t process, smx_process_t issuer) {
XBT_DEBUG("Restarting process %s on %s", process->name, process->smx_host->name);
//retrieve the arguments of the old process
//FIXME: Factorise this with SIMIX_host_add_auto_restart_process ?
arg.auto_restart);
}
-
+ return new_process;
}