X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/030a05a00b073b9a464a4f508d0991cf983ea0df..44d361c91bd348cd70ee6afbdf63a5c2a7406dc1:/src/mc/mc_request.c diff --git a/src/mc/mc_request.c b/src/mc/mc_request.c index 3645c41e32..970800c5d5 100644 --- a/src/mc/mc_request.c +++ b/src/mc/mc_request.c @@ -2,6 +2,9 @@ int MC_request_depend(smx_req_t r1, smx_req_t r2) { + if(_surf_do_model_check == 2) + return TRUE; + if (r1->issuer == r2->issuer) return FALSE; @@ -32,7 +35,7 @@ int MC_request_depend(smx_req_t r1, smx_req_t r2) if( (r2->call == REQ_COMM_ISEND || r2->call == REQ_COMM_IRECV) && r1->call == REQ_COMM_WAIT){ - if(r1->comm_wait.comm->comm.rdv == NULL) + if(r1->comm_wait.comm->comm.rdv != NULL) return FALSE; smx_rdv_t rdv = r2->call == REQ_COMM_ISEND ? r2->comm_isend.rdv : r2->comm_irecv.rdv; @@ -69,8 +72,6 @@ int MC_request_depend(smx_req_t r1, smx_req_t r2) && r1->comm_irecv.rdv != r2->comm_irecv.rdv) return FALSE; - /* If any of the request is a timeout wait, and it reached - * this point, it won't be dependent with any other request. */ if(r1->call == REQ_COMM_WAIT && (r2->call == REQ_COMM_WAIT || r2->call == REQ_COMM_TEST) && (r1->comm_wait.comm->comm.src_proc == NULL || r1->comm_wait.comm->comm.dst_proc == NULL)) @@ -162,15 +163,15 @@ char *MC_request_to_string(smx_req_t req, int value) case REQ_COMM_WAIT: act = req->comm_wait.comm; if(value == -1){ - type = bprintf("Wait Timeout"); + type = bprintf("WaitTimeout"); args = bprintf("comm=%p", act); }else{ type = bprintf("Wait"); - args = bprintf("comm=%p [%s(%lu) -> %s(%lu)]", act, - act->comm.src_proc ? act->comm.src_proc->name : "", + args = bprintf("comm=%p [(%lu)%s -> (%lu)%s]", act, act->comm.src_proc ? act->comm.src_proc->pid : 0, - act->comm.dst_proc ? act->comm.dst_proc->name : "", - act->comm.dst_proc ? act->comm.dst_proc->pid : 0); + act->comm.src_proc ? act->comm.src_proc->name : "", + act->comm.dst_proc ? act->comm.dst_proc->pid : 0, + act->comm.dst_proc ? act->comm.dst_proc->name : ""); } break; case REQ_COMM_TEST: @@ -180,23 +181,29 @@ char *MC_request_to_string(smx_req_t req, int value) args = bprintf("comm=%p", act); }else{ type = bprintf("Test TRUE"); - args = bprintf("comm=%p [%s -> %s]", act, - act->comm.src_proc ? act->comm.src_proc->name : "", - act->comm.dst_proc ? act->comm.dst_proc->name : ""); + args = bprintf("comm=%p [(%lu)%s -> (%lu)%s]", act, + act->comm.src_proc ? act->comm.src_proc->pid : 0, + act->comm.src_proc ? act->comm.src_proc->name : "", + act->comm.dst_proc ? act->comm.dst_proc->pid : 0, + act->comm.dst_proc ? act->comm.dst_proc->name : ""); } break; case REQ_COMM_WAITANY: type = bprintf("WaitAny"); - args = bprintf("-"); - /* FIXME: improve output */ + args = bprintf("comm=%p (%d of %lu)", xbt_dynar_get_as(req->comm_waitany.comms, value, smx_action_t), + value+1, xbt_dynar_length(req->comm_waitany.comms)); break; case REQ_COMM_TESTANY: - type = bprintf("TestAny"); - args = bprintf("-"); - /* FIXME: improve output */ - break; + if(value == -1){ + type = bprintf("TestAny FALSE"); + args = bprintf("-"); + }else{ + type = bprintf("TestAny"); + args = bprintf("(%d of %lu)", value+1, xbt_dynar_length(req->comm_testany.comms)); + } + break; default: THROW_UNIMPLEMENTED; @@ -285,6 +292,11 @@ int MC_request_is_enabled_by_idx(smx_req_t req, unsigned int idx) return (act->comm.src_proc && act->comm.dst_proc); break; + case REQ_COMM_TESTANY: + act = xbt_dynar_get_as(req->comm_testany.comms, idx, smx_action_t); + return (act->comm.src_proc && act->comm.dst_proc); + break; + default: return TRUE; }