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 */