X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/69ff7d41924dcbf7960ee2645f9777018d73dcfe..f53ee0c4bdeaffa3c7a781f45f640e5f32cbb480:/src/mc/mc_global.c diff --git a/src/mc/mc_global.c b/src/mc/mc_global.c index c80540a192..e924d16857 100644 --- a/src/mc/mc_global.c +++ b/src/mc/mc_global.c @@ -55,7 +55,8 @@ void MC_init(int method) MC_UNSET_RAW_MEM; } -void MC_modelcheck(int method){ +void MC_modelcheck(int method) +{ MC_init(method); @@ -69,17 +70,41 @@ void MC_modelcheck(int method){ default: break; } + + MC_exit(method); } -int MC_random(int min, int max) +void MC_exit(int method) { - MC_random_create(min,max); - SIMIX_process_yield(); + mc_state_t state; + + switch(method){ + case 0: + //MC_dfs_exit(); + break; + case 1: + //MC_dpor_exit(); + break; + default: + break; + } + + /* Destroy MC data structures (in RAW memory) */ + MC_SET_RAW_MEM; + xbt_free(mc_stats); + + while( (state = (mc_state_t)xbt_fifo_pop(mc_stack)) != NULL ) + MC_state_delete(state); + + xbt_fifo_free(mc_stack); + xbt_setset_destroy(mc_setset); + MC_UNSET_RAW_MEM; +} - if(!mc_replay_mode) - return mc_current_state->executed_transition->current_value; - else - return mc_current_state->executed_transition->current_value - 1; +int MC_random(int min, int max) +{ + MC_trans_intercept_random(min, max); + return mc_current_state->executed_transition->random.value; } /** @@ -207,6 +232,7 @@ void MC_state_delete(mc_state_t state) mc_transition_t trans; xbt_setset_foreach(state->created_transitions, cursor, trans){ + xbt_setset_elm_remove(mc_setset, trans); MC_transition_delete(trans); } @@ -245,12 +271,7 @@ void MC_execute_surf_actions(void) DEBUG5("Resource [%s] (%d): Executing RUNNING action \"%s\" (%p) MaxDuration %lf", model->name, xbt_swag_size(model->states.running_action_set), smx_action->name, smx_action, action->max_duration); - - /* Copy the transfered data of the completed network actions */ - /* FIXME: be carefull it might not be an action of the network model */ - if(smx_action && smx_action->data != NULL) - SIMIX_network_copy_data((smx_comm_t)smx_action->data); - + if(smx_action) SIMIX_action_signal_all(smx_action); }