X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/8927eb822dce4bffe473d272e506e03435cee833..b1463660ab52c5a6758ccac6db6ade06607b5f6d:/src/simix/smx_global.c diff --git a/src/simix/smx_global.c b/src/simix/smx_global.c index afdf097733..12829ade27 100644 --- a/src/simix/smx_global.c +++ b/src/simix/smx_global.c @@ -22,7 +22,7 @@ XBT_LOG_EXTERNAL_CATEGORY(simix_context); XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_kernel, simix, "Logging specific to SIMIX (kernel)"); -SIMIX_Global_t simix_global = NULL; +smx_global_t simix_global = NULL; static xbt_heap_t simix_timers = NULL; /* FIXME: Yeah, I'll do it in a portable maner one day [Mt] */ @@ -37,6 +37,11 @@ static void _XBT_CALL inthandler(int ignored) /********************************* SIMIX **************************************/ +XBT_INLINE double SIMIX_timer_next(void) +{ + return xbt_heap_size(simix_timers) > 0 ? xbt_heap_maxkey(simix_timers) : -1.0; +} + /** * \brief Initialize SIMIX internal data. * @@ -58,7 +63,7 @@ void SIMIX_global_init(int *argc, char **argv) XBT_LOG_CONNECT(simix_synchro, simix); XBT_LOG_CONNECT(simix_context, simix); - simix_global = xbt_new0(s_SIMIX_Global_t, 1); + simix_global = xbt_new0(s_smx_global_t, 1); simix_global->host = xbt_dict_new(); simix_global->process_to_run = @@ -68,7 +73,6 @@ void SIMIX_global_init(int *argc, char **argv) simix_global->process_to_destroy = xbt_swag_new(xbt_swag_offset(proc, destroy_hookup)); - simix_global->current_process = NULL; simix_global->maestro_process = NULL; simix_global->registered_functions = xbt_dict_new(); @@ -80,6 +84,7 @@ void SIMIX_global_init(int *argc, char **argv) simix_global->latency_limited_dict = xbt_dict_new(); #endif + surf_init(argc, argv); /* Initialize SURF structures */ SIMIX_context_mod_init(); SIMIX_create_maestro_process(); @@ -92,10 +97,9 @@ void SIMIX_global_init(int *argc, char **argv) /* Initialize the SIMIX network module */ SIMIX_network_init(); - + /* Prepare to display some more info when dying on Ctrl-C pressing */ signal(SIGINT, inthandler); - surf_init(argc, argv); /* Initialize SURF structures */ } if (!simix_timers) { simix_timers = xbt_heap_new(8, &free); @@ -114,10 +118,10 @@ void SIMIX_clean(void) /* Exit the SIMIX network module */ SIMIX_network_exit(); - + /* Exit request mechanism */ SIMIX_request_destroy(); - + xbt_heap_free(simix_timers); /* Free the remaining data structures */ xbt_swag_free(simix_global->process_to_run); @@ -173,12 +177,12 @@ void SIMIX_run(void) smx_timer_t timer; surf_model_t model; unsigned int iter; - + do { do { DEBUG0("New Schedule Round"); SIMIX_context_runall(simix_global->process_to_run); - while((req = SIMIX_request_pop())){ + while ((req = SIMIX_request_pop())) { DEBUG1("Handling request %p", req); SIMIX_request_pre(req); } @@ -189,7 +193,7 @@ void SIMIX_run(void) /* Notify all the hosts that have failed */ /* FIXME: iterate through the list of failed host and mark each of them */ /* as failed. On each host, signal all the running processes with host_fail */ - + /* Handle any pending timer */ while (xbt_heap_size(simix_timers) > 0 && SIMIX_get_clock() >= SIMIX_timer_next()) { //FIXME: make the timers being real callbacks @@ -200,16 +204,16 @@ void SIMIX_run(void) } /* Wake up all process waiting for the action finish */ xbt_dynar_foreach(model_list, iter, model) { - for(set = model->states.failed_action_set; - set; - set = (set == model->states.failed_action_set) - ? model->states.done_action_set - : NULL) { + for (set = model->states.failed_action_set; + set; + set = (set == model->states.failed_action_set) + ? model->states.done_action_set + : NULL) { while ((action = xbt_swag_extract(set))) - SIMIX_request_post((smx_action_t)action->data); + SIMIX_request_post((smx_action_t) action->data); } } - } while(time != -1.0); + } while (time != -1.0); } @@ -232,11 +236,6 @@ XBT_INLINE void SIMIX_timer_set(double date, void *function, void *arg) xbt_heap_push(simix_timers, timer, date); } -XBT_INLINE double SIMIX_timer_next(void) -{ - return xbt_heap_size(simix_timers) > 0 ? xbt_heap_maxkey(simix_timers) : -1.0; -} - /** * \brief Registers a function to create a process. * @@ -289,13 +288,14 @@ void SIMIX_display_process_status(void) return; } - smx_process_t process = NULL; - /*xbt_fifo_item_t item = NULL; + /*smx_process_t process = NULL; + xbt_fifo_item_t item = NULL; smx_action_t act;*/ int nbprocess = xbt_swag_size(simix_global->process_list); INFO1("%d processes are still running, waiting for something.", nbprocess); /* List the process and their state */ + /* FIXME: reimplement me INFO0 ("Legend of the following listing: \" on : .\""); xbt_swag_foreach(process, simix_global->process_list) { @@ -311,7 +311,6 @@ void SIMIX_display_process_status(void) who2 = bprintf("Waiting for action %p to finish", process->waiting_action); } - /* if (process->mutex) { who2 = bprintf("%s Blocked on mutex %p", who, @@ -361,8 +360,8 @@ void SIMIX_display_process_status(void) free(who); who = who2; } - */ INFO1("%s.", who); free(who); } + */ }