From: cristianrosa Date: Tue, 3 Aug 2010 14:30:21 +0000 (+0000) Subject: Tweak the handling of WaitAny transitions. It should be properly fixed later. X-Git-Tag: v3_5~733 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/e5079ae99c91da966852f2a09ba3f1aa123abc11 Tweak the handling of WaitAny transitions. It should be properly fixed later. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@8088 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/src/mc/mc_dpor.c b/src/mc/mc_dpor.c index b10416e3ad..05677d22bf 100644 --- a/src/mc/mc_dpor.c +++ b/src/mc/mc_dpor.c @@ -166,8 +166,10 @@ void MC_dpor(void) mc_transition_t q = NULL; xbt_fifo_item_t item = NULL; mc_state_t state = NULL; - - //MC_show_stack(mc_stack); + + /* + INFO0("*********************************"); + MC_show_stack(mc_stack);*/ /* Trash the current state, no longer needed */ MC_SET_RAW_MEM; @@ -184,10 +186,10 @@ void MC_dpor(void) q = mc_current_state->executed_transition; xbt_fifo_foreach(mc_stack, item, state, mc_state_t){ if(MC_transition_depend(q, state->executed_transition)){ - DEBUG3("Dependence found at state %p (%p,%p)", state, state->executed_transition, q); xbt_setset_foreach(state->enabled_transitions, cursor, trans){ if((trans->process == q->process) && !xbt_setset_set_belongs(state->done, trans)){ - DEBUG2("Unexplored interleaving found at state %p (%p)", state, trans); + DEBUG3("%s depend with %s at %p", q->name, + state->executed_transition->name, state); xbt_setset_foreach(state->enabled_transitions, cursor, trans){ if(trans->process == q->process) diff --git a/src/mc/mc_transition.c b/src/mc/mc_transition.c index dcc1915621..363dd90ece 100644 --- a/src/mc/mc_transition.c +++ b/src/mc/mc_transition.c @@ -11,8 +11,7 @@ mc_transition_t MC_trans_isend_new(smx_rdv_t rdv) trans->type = mc_isend; trans->process = SIMIX_process_self(); trans->isend.rdv = rdv; - trans->name = bprintf("[%s][%s] iSend (%p)", trans->process->smx_host->name, - trans->process->name, trans); + trans->name = bprintf("[%s]\t iSend (%p)", trans->process->smx_host->name, trans); return trans; } @@ -24,8 +23,7 @@ mc_transition_t MC_trans_irecv_new(smx_rdv_t rdv) trans->type = mc_irecv; trans->process = SIMIX_process_self(); trans->irecv.rdv = rdv; - trans->name = bprintf("[%s][%s] iRecv (%p)", trans->process->smx_host->name, - trans->process->name, trans); + trans->name = bprintf("[%s]\t iRecv (%p)", trans->process->smx_host->name, trans); return trans; } @@ -37,8 +35,7 @@ mc_transition_t MC_trans_wait_new(smx_comm_t comm) trans->type = mc_wait; trans->process = SIMIX_process_self(); trans->wait.comm = comm; - trans->name = bprintf("[%s][%s] Wait (%p)", trans->process->smx_host->name, - trans->process->name, trans); + trans->name = bprintf("[%s]\t Wait (%p)", trans->process->smx_host->name, trans); return trans; } @@ -50,8 +47,7 @@ mc_transition_t MC_trans_test_new(smx_comm_t comm) trans->type = mc_test; trans->process = SIMIX_process_self(); trans->test.comm = comm; - trans->name = bprintf("[%s][%s] Test (%p)", trans->process->smx_host->name, - trans->process->name, trans); + trans->name = bprintf("[%s]\t Test (%p)", trans->process->smx_host->name, trans); return trans; } @@ -63,8 +59,7 @@ mc_transition_t MC_trans_waitany_new(xbt_dynar_t comms) trans->type = mc_waitany; trans->process = SIMIX_process_self(); trans->waitany.comms = comms; - trans->name = bprintf("[%s][%s] WaitAny (%p)", trans->process->smx_host->name, - trans->process->name, trans); + trans->name = bprintf("[%s]\t WaitAny (%p)", trans->process->smx_host->name, trans); return trans; } @@ -76,8 +71,7 @@ mc_transition_t MC_trans_random_new(int value) trans->type = mc_random; trans->process = SIMIX_process_self(); trans->random.value = value; - trans->name = bprintf("[%s][%s] Random %d (%p)", trans->process->smx_host->name, - trans->process->name, value, trans); + trans->name = bprintf("[%s]\t Random %d (%p)", trans->process->smx_host->name, value, trans); return trans; } @@ -189,20 +183,15 @@ void MC_trans_intercept_test(smx_comm_t comm) */ void MC_trans_intercept_waitany(xbt_dynar_t comms) { - unsigned int cursor; mc_transition_t trans = NULL; mc_state_t current_state = NULL; - smx_comm_t comm = NULL; - if(!mc_replay_mode){ MC_SET_RAW_MEM; + trans = MC_trans_waitany_new(comms); current_state = (mc_state_t) xbt_fifo_get_item_content(xbt_fifo_get_first_item(mc_stack)); - xbt_dynar_foreach(comms, cursor, comm){ - trans = MC_trans_wait_new(comm); - xbt_setset_set_insert(current_state->created_transitions, trans); - xbt_setset_set_insert(current_state->transitions, trans); - } + xbt_setset_set_insert(current_state->created_transitions, trans); + xbt_setset_set_insert(current_state->transitions, trans); MC_UNSET_RAW_MEM; } SIMIX_process_yield(); @@ -253,7 +242,7 @@ void MC_trans_compute_enabled(xbt_setset_set_t enabled, xbt_setset_set_t transit /* WaitAny transitions are enabled if any of it's communications has both a sender and a receiver */ case mc_waitany: - xbt_dynar_foreach(trans->waitany.comms, index, comm){ + xbt_dynar_foreach(trans->waitany.comms, index, comm){ if(comm->src_proc && comm->dst_proc){ xbt_setset_set_insert(enabled, trans); DEBUG1("Transition %p is enabled for next state", trans);