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);