X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ebd1b029876be890946f73fc1c36408a6f401536..b5788f3fc1569b77ba50a00e66fc37cb352f2717:/src/mc/mc_request.c diff --git a/src/mc/mc_request.c b/src/mc/mc_request.c index cb13045859..5efa5a0082 100644 --- a/src/mc/mc_request.c +++ b/src/mc/mc_request.c @@ -393,44 +393,37 @@ int MC_request_is_visible(smx_simcall_t req) int MC_request_is_enabled(smx_simcall_t req) { unsigned int index = 0; - smx_action_t act; + smx_action_t act = 0; switch (req->call) { + case SIMCALL_NONE: + return FALSE; case SIMCALL_COMM_WAIT: /* FIXME: check also that src and dst processes are not suspended */ - - /* If it has a timeout it will be always be enabled, because even if the - * communication is not ready, it can timeout and won't block. - * On the other hand if it hasn't a timeout, check if the comm is ready.*/ + act = simcall_comm_wait__get__comm(req); if (simcall_comm_wait__get__timeout(req) >= 0) { - if (_sg_mc_timeout == 1) { + /* If it has a timeout it will be always be enabled, because even if the + * communication is not ready, it can timeout and won't block. */ + if (_sg_mc_timeout == 1) return TRUE; - } else { - act = simcall_comm_wait__get__comm(req); - return (act->comm.src_proc && act->comm.dst_proc); - } } else { - act = simcall_comm_wait__get__comm(req); + /* On the other hand if it hasn't a timeout, check if the comm is ready.*/ if (act->comm.detached && act->comm.src_proc == NULL && act->comm.type == SIMIX_COMM_READY) return (act->comm.dst_proc != NULL); - return (act->comm.src_proc && act->comm.dst_proc); } - break; + return (act->comm.src_proc && act->comm.dst_proc); case SIMCALL_COMM_WAITANY: /* Check if it has at least one communication ready */ - xbt_dynar_foreach(simcall_comm_waitany__get__comms(req), index, act) { - if (act->comm.src_proc && act->comm.dst_proc) { + xbt_dynar_foreach(simcall_comm_waitany__get__comms(req), index, act) + if (act->comm.src_proc && act->comm.dst_proc) return TRUE; - } - } return FALSE; - break; default: - /* The rest of the request are always enabled */ + /* The rest of the requests are always enabled */ return TRUE; } } @@ -468,11 +461,7 @@ int MC_request_is_enabled_by_idx(smx_simcall_t req, unsigned int idx) int MC_process_is_enabled(smx_process_t process) { - if (process->simcall.call != SIMCALL_NONE - && MC_request_is_enabled(&process->simcall)) - return TRUE; - - return FALSE; + return MC_request_is_enabled(&process->simcall); } char *MC_request_get_dot_output(smx_simcall_t req, int value)