Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Transform transitions of type "mc_waitany" into multiple "wait" transitions.
authorcristianrosa <cristianrosa@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Thu, 27 May 2010 07:59:51 +0000 (07:59 +0000)
committercristianrosa <cristianrosa@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Thu, 27 May 2010 07:59:51 +0000 (07:59 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@7801 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/mc/mc_transition.c

index 99cf291..3d37e46 100644 (file)
@@ -189,15 +189,20 @@ void MC_trans_intercept_test(smx_comm_t comm)
  */
 void MC_trans_intercept_waitany(xbt_dynar_t comms)
 {
  */
 void MC_trans_intercept_waitany(xbt_dynar_t comms)
 {
-  mc_transition_t trans=NULL;
+  unsigned int cursor;
+  mc_transition_t trans = NULL;
   mc_state_t current_state = NULL;
   mc_state_t current_state = NULL;
+  smx_comm_t comm = NULL;
+  
   if(!mc_replay_mode){
     MC_SET_RAW_MEM;
   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));
     current_state = (mc_state_t) 
       xbt_fifo_get_item_content(xbt_fifo_get_first_item(mc_stack));
-    xbt_setset_set_insert(current_state->created_transitions, trans);
-    xbt_setset_set_insert(current_state->transitions, trans);
+    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);
+    }
     MC_UNSET_RAW_MEM;
   }
   SIMIX_process_yield();
     MC_UNSET_RAW_MEM;
   }
   SIMIX_process_yield();
@@ -215,8 +220,8 @@ void MC_trans_intercept_random(int min, int max)
   mc_state_t current_state = NULL;
   if(!mc_replay_mode){
     MC_SET_RAW_MEM;
   mc_state_t current_state = NULL;
   if(!mc_replay_mode){
     MC_SET_RAW_MEM;
-    current_state = (mc_state_t)
-        xbt_fifo_get_item_content(xbt_fifo_get_first_item(mc_stack));
+    current_state = (mc_state_t) 
+      xbt_fifo_get_item_content(xbt_fifo_get_first_item(mc_stack));
     for(i=min; i <= max; i++){    
       trans = MC_trans_random_new(i);
       xbt_setset_set_insert(current_state->created_transitions, trans);
     for(i=min; i <= max; i++){    
       trans = MC_trans_random_new(i);
       xbt_setset_set_insert(current_state->created_transitions, trans);