X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e3c843f8eaafab24c270496e2609278bd3d094a6..5423275bf80828ba9e68147dc76a6fcc737826a7:/src/surf/surf_routing.c diff --git a/src/surf/surf_routing.c b/src/surf/surf_routing.c index f12814909a..6d6bec9f95 100644 --- a/src/surf/surf_routing.c +++ b/src/surf/surf_routing.c @@ -233,6 +233,17 @@ static void parse_S_host(const char *host_id, const char* coord) } } +static void parse_E_host(void) +{ + xbt_dict_cursor_t cursor = NULL; + char *key; + char *elem; + + xbt_dict_foreach(current_property_set, cursor, key, elem) { + DEBUG2("property : %s = %s",key,elem); + } +} + /* * \brief Add a host to the network element list from XML */ @@ -240,6 +251,10 @@ static void parse_S_host_XML(void) { parse_S_host(A_surfxml_host_id, A_surfxml_host_coordinates); } +static void parse_E_host_XML(void) +{ + parse_E_host(); +} /* * \brief Add a host to the network element list from lua script @@ -274,9 +289,6 @@ static void parse_S_router(void) info->rc_type = SURF_NETWORK_ELEMENT_ROUTER; xbt_dict_set(global_routing->where_network_elements, A_surfxml_router_id, (void *) info, xbt_free); -#ifdef HAVE_TRACING - TRACE_surf_host_declaration(A_surfxml_router_id, 0); -#endif if (strcmp(A_surfxml_router_coordinates,"")) { xbt_dynar_t ctn = xbt_str_split_str(A_surfxml_router_coordinates, " "); xbt_dynar_shrink(ctn,0); @@ -1063,6 +1075,7 @@ void routing_model_create(size_t size_of_links, void *loopback, double_f_cpvoid_ /* parse generic elements */ surfxml_add_callback(STag_surfxml_host_cb_list, &parse_S_host_XML); + surfxml_add_callback(ETag_surfxml_host_cb_list, &parse_E_host_XML); surfxml_add_callback(STag_surfxml_router_cb_list, &parse_S_router); surfxml_add_callback(STag_surfxml_route_cb_list, @@ -1095,6 +1108,10 @@ void routing_model_create(size_t size_of_links, void *loopback, double_f_cpvoid_ &routing_parse_Sconfig); surfxml_add_callback(ETag_surfxml_config_cb_list, &routing_parse_Econfig); + +#ifdef HAVE_TRACING + instr_routing_define_callbacks(); +#endif } /* ************************************************************************** */ @@ -3246,8 +3263,19 @@ static void routing_parse_Scluster(void) char *cluster_lat = A_surfxml_cluster_lat; char *cluster_bb_bw = A_surfxml_cluster_bb_bw; char *cluster_bb_lat = A_surfxml_cluster_bb_lat; + char *cluster_availability_file = A_surfxml_cluster_availability_file; + char *cluster_state_file = A_surfxml_cluster_state_file; char *host_id, *groups, *link_id = NULL; char *router_id, *link_router, *link_backbone; + char *availability_file = bprintf("%s",cluster_availability_file); + char *state_file = bprintf("%s",cluster_state_file); + + xbt_dict_t patterns = xbt_dict_new(); + xbt_dict_set(patterns,"id",cluster_id,NULL); + xbt_dict_set(patterns,"prefix",cluster_prefix,NULL); + xbt_dict_set(patterns,"suffix",cluster_suffix,NULL); + + #ifdef HAVE_PCRE_LIB char *route_src_dst; #endif @@ -3294,14 +3322,20 @@ static void routing_parse_Scluster(void) #endif link_id = bprintf("%s_link_%d", cluster_id, start); - DEBUG2("", host_id, cluster_power); + DEBUG2("", host_id, cluster_power); A_surfxml_host_state = A_surfxml_host_state_ON; SURFXML_BUFFER_SET(host_id, host_id); SURFXML_BUFFER_SET(host_power, cluster_power); SURFXML_BUFFER_SET(host_core, cluster_core); SURFXML_BUFFER_SET(host_availability, "1.0"); - SURFXML_BUFFER_SET(host_availability_file, ""); - SURFXML_BUFFER_SET(host_state_file, ""); + xbt_dict_set(patterns,"radical",bprintf("%d",start),NULL); + availability_file = bprintf("%s",cluster_availability_file); + state_file = bprintf("%s",cluster_state_file); + DEBUG1("\tavailability_file=\"%s\"",xbt_str_varsubst(availability_file,patterns)); + DEBUG1("\tstate_file=\"%s\"",xbt_str_varsubst(state_file,patterns)); + SURFXML_BUFFER_SET(host_availability_file, xbt_str_varsubst(availability_file,patterns)); + SURFXML_BUFFER_SET(host_state_file, xbt_str_varsubst(state_file,patterns)); + DEBUG0(""); SURFXML_START_TAG(host); SURFXML_END_TAG(host); @@ -3330,7 +3364,6 @@ static void routing_parse_Scluster(void) surf_parse_get_int(&start, xbt_dynar_get_as(radical_ends, 0, char *)); surf_parse_get_int(&end, xbt_dynar_get_as(radical_ends, 1, char *)); - DEBUG2("Create hosts and links from %d to %d", start, end); for (i = start; i <= end; i++) { host_id = bprintf("%s%d%s", cluster_prefix, i, cluster_suffix); #ifndef HAVE_PCRE_LIB @@ -3338,14 +3371,20 @@ static void routing_parse_Scluster(void) #endif link_id = bprintf("%s_link_%d", cluster_id, i); - DEBUG2("", host_id, cluster_power); + DEBUG2(""); SURFXML_START_TAG(host); SURFXML_END_TAG(host); @@ -3554,6 +3593,9 @@ static void routing_parse_Scluster(void) free(link_backbone); free(link_router); + xbt_dict_free(&patterns); + free(availability_file); + free(state_file); DEBUG0(""); SURFXML_END_TAG(AS); @@ -3572,6 +3614,8 @@ static void routing_parse_Speer(void) char *peer_bw_out = A_surfxml_peer_bw_out; char *peer_lat = A_surfxml_peer_lat; char *peer_coord = A_surfxml_peer_coordinates; + char *peer_state_file = A_surfxml_peer_state_file; + char *peer_availability_file = A_surfxml_peer_availability_file; char *host_id = NULL; char *router_id, *link_router, *link_backbone, *link_id_up, *link_id_down; @@ -3619,8 +3663,8 @@ static void routing_parse_Speer(void) SURFXML_BUFFER_SET(host_id, host_id); SURFXML_BUFFER_SET(host_power, peer_power); SURFXML_BUFFER_SET(host_availability, "1.0"); - SURFXML_BUFFER_SET(host_availability_file, ""); - SURFXML_BUFFER_SET(host_state_file, ""); + SURFXML_BUFFER_SET(host_availability_file, peer_availability_file); + SURFXML_BUFFER_SET(host_state_file, peer_state_file); SURFXML_START_TAG(host); SURFXML_END_TAG(host);