X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e96d56e5fd2a71e414dca55d501f6756bd0c0eb5..d528b1c80ec6456af1cd0ddff758a5ad2230d322:/src/surf/surfxml_parse.c diff --git a/src/surf/surfxml_parse.c b/src/surf/surfxml_parse.c index d2153b1673..749bfa235a 100644 --- a/src/surf/surfxml_parse.c +++ b/src/surf/surfxml_parse.c @@ -76,6 +76,8 @@ xbt_dynar_t STag_surfxml_prop_cb_list = NULL; xbt_dynar_t ETag_surfxml_prop_cb_list = NULL; xbt_dynar_t STag_surfxml_cluster_cb_list = NULL; xbt_dynar_t ETag_surfxml_cluster_cb_list = NULL; +xbt_dynar_t STag_surfxml_peer_cb_list = NULL; +xbt_dynar_t ETag_surfxml_peer_cb_list = NULL; xbt_dynar_t STag_surfxml_trace_cb_list = NULL; xbt_dynar_t ETag_surfxml_trace_cb_list = NULL; xbt_dynar_t STag_surfxml_trace_connect_cb_list = NULL; @@ -144,6 +146,8 @@ void surf_parse_free_callbacks(void) xbt_dynar_free(&ETag_surfxml_bypassRoute_cb_list); xbt_dynar_free(&STag_surfxml_cluster_cb_list); xbt_dynar_free(&ETag_surfxml_cluster_cb_list); + xbt_dynar_free(&STag_surfxml_peer_cb_list); + xbt_dynar_free(&ETag_surfxml_peer_cb_list); xbt_dynar_free(&STag_surfxml_config_cb_list); xbt_dynar_free(&ETag_surfxml_config_cb_list); } @@ -199,8 +203,14 @@ void surf_parse_reset_parser(void) xbt_dynar_new(sizeof(void_f_void_t), NULL); ETag_surfxml_cluster_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); - STag_surfxml_config_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); - ETag_surfxml_config_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); + STag_surfxml_peer_cb_list = + xbt_dynar_new(sizeof(void_f_void_t), NULL); + ETag_surfxml_peer_cb_list = + xbt_dynar_new(sizeof(void_f_void_t), NULL); + STag_surfxml_config_cb_list = + xbt_dynar_new(sizeof(void_f_void_t), NULL); + ETag_surfxml_config_cb_list = + xbt_dynar_new(sizeof(void_f_void_t), NULL); } /* Stag and Etag parse functions */ @@ -270,6 +280,8 @@ parse_method(S, bypassRoute); parse_method(E, bypassRoute); parse_method(S, cluster); parse_method(E, cluster); +parse_method(S, peer); +parse_method(E, peer); parse_method(S, config); parse_method(E, config); @@ -377,13 +389,16 @@ static void init_data(void) trace_connect_list_bandwidth = xbt_dict_new(); trace_connect_list_latency = xbt_dict_new(); - surfxml_add_callback(STag_surfxml_random_cb_list, &init_randomness); - surfxml_add_callback(ETag_surfxml_random_cb_list, &add_randomness); surfxml_add_callback(STag_surfxml_prop_cb_list, &parse_properties); - surfxml_add_callback(STag_surfxml_trace_cb_list, &parse_Stag_trace); - surfxml_add_callback(ETag_surfxml_trace_cb_list, &parse_Etag_trace); - surfxml_add_callback(STag_surfxml_trace_connect_cb_list, - &parse_Stag_trace_connect); + if(xbt_dynar_is_empty(STag_surfxml_config_cb_list)) + { + surfxml_add_callback(STag_surfxml_random_cb_list, &init_randomness); + surfxml_add_callback(ETag_surfxml_random_cb_list, &add_randomness); + surfxml_add_callback(STag_surfxml_trace_cb_list, &parse_Stag_trace); + surfxml_add_callback(ETag_surfxml_trace_cb_list, &parse_Etag_trace); + surfxml_add_callback(STag_surfxml_trace_connect_cb_list, + &parse_Stag_trace_connect); + } } static void free_data(void) @@ -399,7 +414,6 @@ static void free_data(void) } /* Here start parse */ - void parse_platform_file(const char *file) { int parse_status; @@ -430,12 +444,12 @@ void parse_properties(void) static double trace_periodicity = -1.0; static char *trace_file = NULL; -static char *trace_id; +static char *trace_id = NULL; static void parse_Stag_trace(void) { - trace_id = strdup(A_surfxml_trace_id); - trace_file = strdup(A_surfxml_trace_file); + trace_id = xbt_strdup(A_surfxml_trace_id); + trace_file = xbt_strdup(A_surfxml_trace_file); surf_parse_get_double(&trace_periodicity, A_surfxml_trace_periodicity); } @@ -453,6 +467,10 @@ static void parse_Etag_trace(void) trace_periodicity); } xbt_dict_set(traces_set_list, trace_id, (void *) trace, NULL); + xbt_free(trace_file); + trace_file = NULL; + xbt_free(trace_id); + trace_id = NULL; } static void parse_Stag_trace_connect(void) @@ -550,7 +568,7 @@ static void add_randomness(void) */ void surf_host_create_resource(char *name, double power_peak, double power_scale, - tmgr_trace_t power_trace, + tmgr_trace_t power_trace, int core, e_surf_resource_state_t state_initial, tmgr_trace_t state_trace, xbt_dict_t cpu_properties) @@ -558,6 +576,7 @@ void surf_host_create_resource(char *name, double power_peak, return surf_cpu_model->extension.cpu.create_resource(name, power_peak, power_scale, power_trace, + core, state_initial, state_trace, cpu_properties);