X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/8f3f851daa42c5485ec0fedf68b24c639e43aee5..7edfb13279f2fded41bac9dece85360d0c43a9a7:/src/surf/surfxml_parse.c diff --git a/src/surf/surfxml_parse.c b/src/surf/surfxml_parse.c index e101d03a32..53db2901e8 100644 --- a/src/surf/surfxml_parse.c +++ b/src/surf/surfxml_parse.c @@ -31,6 +31,10 @@ int surfxml_bufferstack_size = 2048; static char *old_buff = NULL; static void surf_parse_error(char *msg); +unsigned int surfxml_buffer_stack_stack_ptr; +unsigned int surfxml_buffer_stack_stack[1024]; + + void surfxml_bufferstack_push(int new) { if (!new) @@ -62,8 +66,8 @@ xbt_dynar_t STag_surfxml_link_cb_list = NULL; xbt_dynar_t ETag_surfxml_link_cb_list = NULL; xbt_dynar_t STag_surfxml_route_cb_list = NULL; xbt_dynar_t ETag_surfxml_route_cb_list = NULL; -xbt_dynar_t STag_surfxml_link_c_ctn_cb_list = NULL; -xbt_dynar_t ETag_surfxml_link_c_ctn_cb_list = NULL; +xbt_dynar_t STag_surfxml_link_ctn_cb_list = NULL; +xbt_dynar_t ETag_surfxml_link_ctn_cb_list = NULL; xbt_dynar_t STag_surfxml_process_cb_list = NULL; xbt_dynar_t ETag_surfxml_process_cb_list = NULL; xbt_dynar_t STag_surfxml_argument_cb_list = NULL; @@ -74,8 +78,8 @@ xbt_dynar_t STag_surfxml_cluster_cb_list = NULL; xbt_dynar_t ETag_surfxml_cluster_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_c_connect_cb_list = NULL; -xbt_dynar_t ETag_surfxml_trace_c_connect_cb_list = NULL; +xbt_dynar_t STag_surfxml_trace_connect_cb_list = NULL; +xbt_dynar_t ETag_surfxml_trace_connect_cb_list = NULL; xbt_dynar_t STag_surfxml_random_cb_list = NULL; xbt_dynar_t ETag_surfxml_random_cb_list = NULL; xbt_dynar_t STag_surfxml_AS_cb_list = NULL; @@ -99,7 +103,7 @@ static void surf_parse_error(char *msg); static void parse_Stag_trace(void); static void parse_Etag_trace(void); -static void parse_Stag_trace_c_connect(void); +static void parse_Stag_trace_connect(void); static void init_randomness(void); static void add_randomness(void); @@ -116,8 +120,8 @@ void surf_parse_free_callbacks(void) xbt_dynar_free(&ETag_surfxml_link_cb_list); xbt_dynar_free(&STag_surfxml_route_cb_list); xbt_dynar_free(&ETag_surfxml_route_cb_list); - xbt_dynar_free(&STag_surfxml_link_c_ctn_cb_list); - xbt_dynar_free(&ETag_surfxml_link_c_ctn_cb_list); + xbt_dynar_free(&STag_surfxml_link_ctn_cb_list); + xbt_dynar_free(&ETag_surfxml_link_ctn_cb_list); xbt_dynar_free(&STag_surfxml_process_cb_list); xbt_dynar_free(&ETag_surfxml_process_cb_list); xbt_dynar_free(&STag_surfxml_argument_cb_list); @@ -126,8 +130,8 @@ void surf_parse_free_callbacks(void) xbt_dynar_free(&ETag_surfxml_prop_cb_list); xbt_dynar_free(&STag_surfxml_trace_cb_list); xbt_dynar_free(&ETag_surfxml_trace_cb_list); - xbt_dynar_free(&STag_surfxml_trace_c_connect_cb_list); - xbt_dynar_free(&ETag_surfxml_trace_c_connect_cb_list); + xbt_dynar_free(&STag_surfxml_trace_connect_cb_list); + xbt_dynar_free(&ETag_surfxml_trace_connect_cb_list); xbt_dynar_free(&STag_surfxml_random_cb_list); xbt_dynar_free(&ETag_surfxml_random_cb_list); xbt_dynar_free(&STag_surfxml_AS_cb_list); @@ -153,8 +157,8 @@ void surf_parse_reset_parser(void) ETag_surfxml_link_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); STag_surfxml_route_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); ETag_surfxml_route_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); - STag_surfxml_link_c_ctn_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); - ETag_surfxml_link_c_ctn_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); + STag_surfxml_link_ctn_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); + ETag_surfxml_link_ctn_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); STag_surfxml_process_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); ETag_surfxml_process_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); STag_surfxml_argument_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); @@ -163,8 +167,8 @@ void surf_parse_reset_parser(void) ETag_surfxml_prop_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); STag_surfxml_trace_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); ETag_surfxml_trace_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); - STag_surfxml_trace_c_connect_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); - ETag_surfxml_trace_c_connect_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); + STag_surfxml_trace_connect_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); + ETag_surfxml_trace_connect_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); STag_surfxml_random_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); ETag_surfxml_random_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); STag_surfxml_AS_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); @@ -216,12 +220,12 @@ parse_method(S,host); parse_method(E,host); parse_method(S,router); parse_method(E,router); parse_method(S,link); parse_method(E,link); parse_method(S,route); parse_method(E,route); -parse_method(S,link_c_ctn); parse_method(E,link_c_ctn); +parse_method(S,link_ctn); parse_method(E,link_ctn); parse_method(S,process); parse_method(E,process); parse_method(S,argument); parse_method(E,argument); parse_method(S,prop); parse_method(E,prop); parse_method(S,trace); parse_method(E,trace); -parse_method(S,trace_c_connect); parse_method(E,trace_c_connect); +parse_method(S,trace_connect); parse_method(E,trace_connect); parse_method(S,random); parse_method(E,random); parse_method(S,AS); parse_method(E,AS); parse_method(S,ASroute); parse_method(E,ASroute); @@ -336,7 +340,7 @@ static void init_data(void) 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_c_connect_cb_list, &parse_Stag_trace_c_connect); + surfxml_add_callback(STag_surfxml_trace_connect_cb_list, &parse_Stag_trace_connect); } static void free_data(void) @@ -356,6 +360,10 @@ static void free_data(void) void parse_platform_file(const char *file) { int parse_status; + + surfxml_buffer_stack_stack_ptr = 1; + surfxml_buffer_stack_stack[0] = 0; + surf_parse_open(file); init_data(); parse_status = surf_parse(); @@ -404,42 +412,42 @@ static void parse_Etag_trace(void) xbt_dict_set(traces_set_list, trace_id, (void *) trace, NULL); } -static void parse_Stag_trace_c_connect(void) +static void parse_Stag_trace_connect(void) { xbt_assert2(xbt_dict_get_or_null - (traces_set_list, A_surfxml_trace_c_connect_trace), + (traces_set_list, A_surfxml_trace_connect_trace), "Cannot connect trace %s to %s: trace unknown", - A_surfxml_trace_c_connect_trace, - A_surfxml_trace_c_connect_element); + A_surfxml_trace_connect_trace, + A_surfxml_trace_connect_element); - switch (A_surfxml_trace_c_connect_kind) { - case A_surfxml_trace_c_connect_kind_HOST_AVAIL: + switch (A_surfxml_trace_connect_kind) { + case A_surfxml_trace_connect_kind_HOST_AVAIL: xbt_dict_set(trace_connect_list_host_avail, - A_surfxml_trace_c_connect_trace, - xbt_strdup(A_surfxml_trace_c_connect_element), free); + A_surfxml_trace_connect_trace, + xbt_strdup(A_surfxml_trace_connect_element), free); break; - case A_surfxml_trace_c_connect_kind_POWER: - xbt_dict_set(trace_connect_list_power, A_surfxml_trace_c_connect_trace, - xbt_strdup(A_surfxml_trace_c_connect_element), free); + case A_surfxml_trace_connect_kind_POWER: + xbt_dict_set(trace_connect_list_power, A_surfxml_trace_connect_trace, + xbt_strdup(A_surfxml_trace_connect_element), free); break; - case A_surfxml_trace_c_connect_kind_LINK_AVAIL: + case A_surfxml_trace_connect_kind_LINK_AVAIL: xbt_dict_set(trace_connect_list_link_avail, - A_surfxml_trace_c_connect_trace, - xbt_strdup(A_surfxml_trace_c_connect_element), free); + A_surfxml_trace_connect_trace, + xbt_strdup(A_surfxml_trace_connect_element), free); break; - case A_surfxml_trace_c_connect_kind_BANDWIDTH: + case A_surfxml_trace_connect_kind_BANDWIDTH: xbt_dict_set(trace_connect_list_bandwidth, - A_surfxml_trace_c_connect_trace, - xbt_strdup(A_surfxml_trace_c_connect_element), free); + A_surfxml_trace_connect_trace, + xbt_strdup(A_surfxml_trace_connect_element), free); break; - case A_surfxml_trace_c_connect_kind_LATENCY: - xbt_dict_set(trace_connect_list_latency, A_surfxml_trace_c_connect_trace, - xbt_strdup(A_surfxml_trace_c_connect_element), free); + case A_surfxml_trace_connect_kind_LATENCY: + xbt_dict_set(trace_connect_list_latency, A_surfxml_trace_connect_trace, + xbt_strdup(A_surfxml_trace_connect_element), free); break; default: xbt_die(bprintf("Cannot connect trace %s to %s: kind of trace unknown", - A_surfxml_trace_c_connect_trace, - A_surfxml_trace_c_connect_element)); + A_surfxml_trace_connect_trace, + A_surfxml_trace_connect_element)); } } @@ -557,35 +565,43 @@ void surf_wsL07_link_create_resource(char *name, } /** - * Route: add route element bypassing the parser : - * same job as parse_route_elem + * + *init new routing model component */ -void surf_add_route_element(char* link_ctn_id) +void surf_AS_new(const char* AS_id, const char *AS_mode) { - xbt_die("\"surf_add_route_element\" not support"); -// char *val; -// val = xbt_strdup(link_ctn_id); -// xbt_dynar_push(route_link_list,&val); + routing_AS_init(AS_id,AS_mode); } -/** - * set route - */ -void surf_route_set_resource(char *source_id,char *destination_id,xbt_dynar_t links_id,int action) + +void surf_AS_finalize(const char* AS_id) { - xbt_die("\"surf_route_set_resource\" not support"); - //route_link_list = xbt_dynar_new(sizeof(char *), NULL); - //routing_add_route(source_id,destination_id,links_id,action); + routing_AS_end(AS_id); +} +/* + * add host to the network element list + */ +void surf_route_add_host(const char* host_id) +{ + routing_add_host(host_id); } /** - * add host to routing host list + * set route */ -void surf_route_add_host(char *host_id) +void surf_routing_add_route(const char *src_id,const char *dst_id,xbt_dynar_t links_id) { - xbt_die("\"surf_route_add_host\" not support"); - //routing_add_host(host_id); + unsigned int i; + const char * link_id; + routing_set_route(src_id,dst_id); + xbt_dynar_foreach(links_id,i,link_id) + { + routing_add_link(link_id); + } + + //store the route + routing_store_route(); } /** @@ -606,11 +622,3 @@ void surf_wsL07_add_traces(void) return surf_workstation_model->extension.workstation.add_traces(); } -/** - * set routes - */ -void surf_set_routes(void) -{ - xbt_die("\"surf_set_routes\" not support"); - //routing_set_routes(); -}