X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/30f1c8c5e4b8a7b6e593c7bb885ffad766ae6f5d..035063bc298e061d8f47cc49f63311451d681af7:/src/surf/surf_routing.c diff --git a/src/surf/surf_routing.c b/src/surf/surf_routing.c index 583028ea24..78d9f4667e 100644 --- a/src/surf/surf_routing.c +++ b/src/surf/surf_routing.c @@ -55,7 +55,7 @@ static void routing_parse_Sconfig(void); /* config Tag */ static void routing_parse_Econfig(void); /* config Tag */ static char* replace_random_parameter(char * chaine); -static void clean_dict_random(void); +static void clean_routing_after_parse(void); /* this lines are only for replace use like index in the model table */ typedef enum { @@ -833,6 +833,20 @@ static double get_latency(const char *src, const char *dst) return latency; } +static int surf_parse_models_setup_already_called=0; +/* Call the last initialization functions, that must be called after the + * tag, if any, and before the first of cluster|peer|AS|trace|trace_connect + */ +void surf_parse_models_setup() +{ + if (surf_parse_models_setup_already_called) + return; + surf_parse_models_setup_already_called=1; + routing_parse_Erandom(); + surf_config_models_setup(); +} + + /** * \brief Recursive function for finalize * @@ -874,6 +888,8 @@ static void finalize(void) xbt_dynar_free(&(global_routing->last_route)); /* delete global routing structure */ xbt_free(global_routing); + /* make sure that we will reinit the models while loading the platf once reinited -- HACK but there is no proper surf_routing_init() */ + surf_parse_models_setup_already_called = 0; } static xbt_dynar_t recursive_get_onelink_routes(routing_component_t rc) @@ -980,7 +996,7 @@ void routing_model_create(size_t size_of_links, void *loopback, double_f_cpvoid_ &routing_parse_Speer); surfxml_add_callback(ETag_surfxml_platform_cb_list, - &clean_dict_random); + &clean_routing_after_parse); #ifdef HAVE_TRACING instr_routing_define_callbacks(); @@ -992,18 +1008,9 @@ void surf_parse_add_callback_config(void) surfxml_add_callback(STag_surfxml_config_cb_list, &routing_parse_Sconfig); surfxml_add_callback(ETag_surfxml_config_cb_list, &routing_parse_Econfig); surfxml_add_callback(STag_surfxml_prop_cb_list, &parse_properties_XML); - surfxml_add_callback(STag_surfxml_AS_cb_list, &surf_parse_models_setup); surfxml_add_callback(STag_surfxml_random_cb_list, &routing_parse_Srandom); } -void surf_parse_models_setup() -{ - routing_parse_Erandom(); - surfxml_del_callback(STag_surfxml_AS_cb_list, surf_parse_models_setup); - surf_config_models_setup(platform_filename); - free(platform_filename); -} - /* ************************************************** */ /* ********** PATERN FOR NEW ROUTING **************** */ @@ -1481,7 +1488,7 @@ static void routing_parse_Econfig(void) if(xbt_cfg_is_default_value(_surf_cfg_set, key)) xbt_cfg_set_parse(_surf_cfg_set, cfg); else - XBT_INFO("The custom configuration '%s' is already define by user!",key); + XBT_INFO("The custom configuration '%s' is already defined by user!",key); free(cfg); } XBT_DEBUG("End configuration name = %s",A_surfxml_config_id); @@ -1862,7 +1869,7 @@ static char* replace_random_parameter(char * string) return string; } -static void clean_dict_random(void) +static void clean_routing_after_parse(void) { xbt_dict_free(&random_value); xbt_dict_free(&patterns); @@ -2098,17 +2105,16 @@ static void routing_parse_Srandom(void) static void routing_parse_Erandom(void) { - xbt_dict_cursor_t cursor = NULL; + /*xbt_dict_cursor_t cursor = NULL; char *key; char *elem; xbt_dict_foreach(random_value, cursor, key, elem) { XBT_DEBUG("%s = %s",key,elem); } - +*/ } - /* * New methods to init the routing model component from the lua script */