}
SIMIX_synchro_stop_waiting(simcall->issuer, simcall);
+ simcall->issuer->waiting_action = NULL;
SIMIX_synchro_destroy(action);
SIMIX_simcall_answer(simcall);
XBT_OUT();
smx_mutex_t mutex,
double timeout)
{
- xbt_ex_t e;
-
xbt_assert(isfinite(timeout), "timeout is not finite!");
smx_simcall_t simcall = SIMIX_simcall_mine();
simcall->cond_wait_timeout.mutex = mutex;
simcall->cond_wait_timeout.timeout = timeout;
- TRY {
- SIMIX_simcall_push(simcall->issuer);
- }
- CATCH(e) {
- switch (e.category) {
- case timeout_error:
- simcall->issuer->waiting_action = NULL; // FIXME: should clean ?
- break;
- default:
- break;
- }
- RETHROW;
- xbt_ex_free(e);
- }
+ SIMIX_simcall_push(simcall->issuer);
}
void simcall_cond_broadcast(smx_cond_t cond)