X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/88a573f150347b7a61b6ed2acd1e69da92b7a99b..9031dff0f8da3ab9e9e3c7551e6f74c9c2d31ccd:/src/simix/smx_global.c diff --git a/src/simix/smx_global.c b/src/simix/smx_global.c index ccf0011978..e171cd787f 100644 --- a/src/simix/smx_global.c +++ b/src/simix/smx_global.c @@ -64,7 +64,7 @@ void SIMIX_global_init(int *argc, char **argv) #ifdef TIME_BENCH_AMDAHL simix_global->timer_seq = xbt_os_timer_new(); simix_global->timer_par = xbt_os_timer_new(); - xbt_os_timer_start(simix_global->timer_seq); + xbt_os_cputimer_start(simix_global->timer_seq); #endif simix_global->process_to_run = xbt_dynar_new(sizeof(smx_process_t), NULL); simix_global->process_that_ran = xbt_dynar_new(sizeof(smx_process_t), NULL); @@ -156,7 +156,7 @@ static void SIMIX_clean(void) surf_exit(); #ifdef TIME_BENCH_AMDAHL - xbt_os_timer_stop(simix_global->timer_seq); + xbt_os_cputimer_stop(simix_global->timer_seq); XBT_INFO("Amdhal timing informations. Sequential time: %lf; Parallel time: %lf", xbt_os_timer_elapsed(simix_global->timer_seq), xbt_os_timer_elapsed(simix_global->timer_par)); @@ -226,13 +226,13 @@ void SIMIX_run(void) /* Run all processes that are ready to run, possibly in parallel */ #ifdef TIME_BENCH_AMDAHL - xbt_os_timer_stop(simix_global->timer_seq); - xbt_os_timer_resume(simix_global->timer_par); + xbt_os_cputimer_stop(simix_global->timer_seq); + xbt_os_cputimer_resume(simix_global->timer_par); #endif SIMIX_process_runall(); #ifdef TIME_BENCH_AMDAHL - xbt_os_timer_stop(simix_global->timer_par); - xbt_os_timer_resume(simix_global->timer_seq); + xbt_os_cputimer_stop(simix_global->timer_par); + xbt_os_cputimer_resume(simix_global->timer_seq); #endif /* Move all killing processes to the end of the list, because killing a process that have an ongoing simcall is a bad idea */ @@ -315,6 +315,7 @@ void SIMIX_run(void) timer = xbt_heap_pop(simix_timers); if (timer->func) ((void (*)(void*))timer->func)(timer->args); + xbt_free(timer); } /* Wake up all processes waiting for a Surf action to finish */ xbt_dynar_foreach(model_list, iter, model) { @@ -322,15 +323,20 @@ void SIMIX_run(void) while ((action = xbt_swag_extract(set))) SIMIX_simcall_post((smx_action_t) action->data); set = model->states.done_action_set; - while ((action = xbt_swag_extract(set))) - SIMIX_simcall_post((smx_action_t) action->data); + + while ((action = xbt_swag_extract(set))) { + if (action->data == NULL) + XBT_DEBUG("probably vcpu's action %p, skip", action); + else + SIMIX_simcall_post((smx_action_t) action->data); + } } /* Clean processes to destroy */ SIMIX_process_empty_trash(); - // XBT_INFO("### time %f, empty %d", time, xbt_dynar_is_empty(simix_global->process_to_run)); + XBT_DEBUG("### time %f, empty %d", time, xbt_dynar_is_empty(simix_global->process_to_run)); // !(time == -1.0 && xbt_dynar_is_empty())