X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a38c139dae908a891ed224eb09f8d517f7bdf6b3..9970cff0913d40427d9007333bfee5af3a4d2163:/src/surf/surf_routing.c diff --git a/src/surf/surf_routing.c b/src/surf/surf_routing.c index 634b3c7e38..ca28b7a9eb 100644 --- a/src/surf/surf_routing.c +++ b/src/surf/surf_routing.c @@ -172,83 +172,52 @@ 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) { - XBT_DEBUG("property : %s = %s",key,elem); - } -} - /* * \brief Add a host to the network element list from XML */ -static void parse_S_host_XML(surf_parsing_host_arg_t h) +static void parse_S_host_XML(sg_platf_host_cbarg_t h) { parse_S_host(h->V_host_id, h->V_host_coord); } -static void parse_E_host_XML(void) -{ - parse_E_host(); -} - -/* - * \brief Add a host to the network element list from lua script - */ -static void parse_S_host_lua(const char *host_id, const char *coord) -{ - parse_S_host(host_id, coord); -} - /** * \brief Add a "router" to the network element list */ -static void parse_S_router(void) +static void parse_S_router(sg_platf_router_cbarg_t router) { network_element_info_t info = NULL; if (current_routing->hierarchy == SURF_ROUTING_NULL) current_routing->hierarchy = SURF_ROUTING_BASE; - xbt_assert(!xbt_lib_get_or_null(as_router_lib,struct_router->V_router_id, ROUTING_ASR_LEVEL), + xbt_assert(!xbt_lib_get_or_null(as_router_lib,router->V_router_id, ROUTING_ASR_LEVEL), "Reading a router, processing unit \"%s\" already exists", - struct_router->V_router_id); + router->V_router_id); xbt_assert(current_routing->set_processing_unit, "no defined method \"set_processing_unit\" in \"%s\"", current_routing->name); (*(current_routing->set_processing_unit)) (current_routing, - struct_router->V_router_id); + router->V_router_id); info = xbt_new0(s_network_element_info_t, 1); info->rc_component = current_routing; info->rc_type = SURF_NETWORK_ELEMENT_ROUTER; - xbt_lib_set(as_router_lib,struct_router->V_router_id,ROUTING_ASR_LEVEL,(void *) info); + xbt_lib_set(as_router_lib,router->V_router_id,ROUTING_ASR_LEVEL,(void *) info); if (strcmp(A_surfxml_router_coordinates,"")) { if(!COORD_ASR_LEVEL) xbt_die("To use coordinates, you must set configuration 'coordinates' to 'yes'"); xbt_dynar_t ctn = xbt_str_split_str(A_surfxml_router_coordinates, " "); xbt_dynar_shrink(ctn, 0); - xbt_lib_set(as_router_lib,struct_router->V_router_id,COORD_ASR_LEVEL,(void *) ctn); + xbt_lib_set(as_router_lib,router->V_router_id,COORD_ASR_LEVEL,(void *) ctn); } } /** * brief Add a "router" to the network element list from XML description */ -static void parse_S_router_XML(void) -{ - return parse_S_router(); -} - -/** - * brief Add a "router" to the network element list from XML description - */ -static void parse_S_router_lua(const char* router_id) -{ - struct_router->V_router_id = xbt_strdup(router_id); - struct_router->V_router_coord = xbt_strdup(""); - return parse_S_router(); +static void parse_S_router_lua(const char* router_id) { + s_sg_platf_router_cbarg_t router; + memset(&router,0,sizeof(router)); + router.V_router_id = router_id; + router.V_router_coord = ""; + return parse_S_router(&router); } /** @@ -967,9 +936,8 @@ void routing_model_create(size_t size_of_links, void *loopback, double_f_cpvoid_ current_routing = NULL; /* parse generic elements */ - surf_parse_host_add_cb(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_XML); + sg_platf_host_add_cb(parse_S_host_XML); + sg_platf_router_add_cb(parse_S_router); surfxml_add_callback(STag_surfxml_route_cb_list, &parse_S_route_new_and_endpoints_XML); @@ -1469,103 +1437,6 @@ void generic_src_dst_check(routing_component_t rc, const char *src, src,dst,src_as->name, dst_as->name,rc->name); } - -static void parse_create_host_link(int i) -{ - char *host_id, *link_id = NULL; - s_surf_parsing_host_arg_t host; - memset(&host,0,sizeof(host)); - - host_id = bprintf("%s%d%s", struct_cluster->V_cluster_prefix, i, struct_cluster->V_cluster_suffix); - link_id = bprintf("%s_link_%d", struct_cluster->V_cluster_id, i); - - A_surfxml_host_state = A_surfxml_host_state_ON; - - XBT_DEBUG("", host_id, struct_cluster->S_cluster_power); - host.V_host_id = xbt_strdup(host_id); - if(strcmp(struct_cluster->V_cluster_availability_file,"")){ - xbt_dict_set(patterns, "radical", bprintf("%d", i), xbt_free); - char* tmp_availability_file = xbt_strdup(struct_cluster->V_cluster_availability_file); - xbt_str_varsubst(tmp_availability_file,patterns); - XBT_DEBUG("\tavailability_file=\"%s\"",tmp_availability_file); - host.V_host_power_trace = tmgr_trace_new(tmp_availability_file); - xbt_free(tmp_availability_file); - } - else - { - XBT_DEBUG("\tavailability_file=\"\""); - } - if(strcmp(struct_cluster->V_cluster_state_file,"")){ - char *tmp_state_file = xbt_strdup(struct_cluster->V_cluster_state_file); - xbt_str_varsubst(tmp_state_file,patterns); - XBT_DEBUG("\tstate_file=\"%s\"",tmp_state_file); - host.V_host_state_trace = tmgr_trace_new(tmp_state_file); - xbt_free(tmp_state_file); - } - else - { - XBT_DEBUG("\tstate_file=\"\""); - } - - host.V_host_power_peak = struct_cluster->S_cluster_power; - host.V_host_power_scale = 1.0; - host.V_host_core = struct_cluster->S_cluster_core; - host.V_host_state_initial = SURF_RESOURCE_ON; - host.V_host_coord = ""; - surf_parse_host(&host); - XBT_DEBUG(""); - - A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_SHARED; - if(AX_surfxml_cluster_sharing_policy == A_surfxml_cluster_sharing_policy_FULLDUPLEX) - {A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_FULLDUPLEX;} - if(AX_surfxml_cluster_sharing_policy == A_surfxml_cluster_sharing_policy_FATPIPE) - {A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_FATPIPE;} - - XBT_DEBUG("", link_id,struct_cluster->S_cluster_bw, struct_cluster->S_cluster_lat); - - struct_lnk = xbt_new0(s_surf_parsing_link_arg_t, 1); - struct_lnk->V_link_id = xbt_strdup(link_id); - struct_lnk->V_link_bandwidth = struct_cluster->S_cluster_bw; - struct_lnk->V_link_latency = struct_cluster->S_cluster_lat; - struct_lnk->V_link_bandwidth_file = NULL; - struct_lnk->V_link_latency_file = NULL; - struct_lnk->V_link_state_file = NULL; - struct_lnk->V_link_state = SURF_RESOURCE_ON; - struct_lnk->V_link_sharing_policy = A_surfxml_link_sharing_policy; - - if (A_surfxml_link_sharing_policy == A_surfxml_link_sharing_policy_SHARED) - struct_lnk->V_policy_initial_link = SURF_LINK_SHARED; - else - { - if (A_surfxml_link_sharing_policy == A_surfxml_link_sharing_policy_FATPIPE) - struct_lnk->V_policy_initial_link = SURF_LINK_FATPIPE; - else if (A_surfxml_link_sharing_policy == A_surfxml_link_sharing_policy_FULLDUPLEX) - struct_lnk->V_policy_initial_link = SURF_LINK_FULLDUPLEX; - } - surf_parse_link(); - - ETag_surfxml_host(); - ETag_surfxml_link(); - - surf_parsing_link_up_down_t info = xbt_new0(s_surf_parsing_link_up_down_t, 1); - - if (A_surfxml_link_sharing_policy == A_surfxml_link_sharing_policy_FULLDUPLEX){ - char* tmp_link = bprintf("%s_UP",link_id); - info->link_up = xbt_lib_get_or_null(link_lib, tmp_link, SURF_LINK_LEVEL); - free(tmp_link); - tmp_link = bprintf("%s_DOWN",link_id); - info->link_down = xbt_lib_get_or_null(link_lib, tmp_link, SURF_LINK_LEVEL); - free(tmp_link); - } - else{ - info->link_up = xbt_lib_get_or_null(link_lib, link_id, SURF_LINK_LEVEL); - info->link_down = info->link_up; - } - xbt_dict_set(cluster_host_link,host_id,info,xbt_free); - xbt_free(link_id); - xbt_free(host_id); -} - void routing_parse_Scluster(void) { if(!cluster_host_link) @@ -1574,7 +1445,7 @@ void routing_parse_Scluster(void) static int AX_ptr = 0; char *host_id, *groups, *link_id = NULL; - s_surf_parsing_host_arg_t host; + s_sg_platf_host_cbarg_t host; if( strcmp(struct_cluster->V_cluster_availability_file,"") || strcmp(struct_cluster->V_cluster_state_file,"") ) @@ -1645,7 +1516,7 @@ void routing_parse_Scluster(void) host.V_host_core = struct_cluster->S_cluster_core; host.V_host_state_initial = SURF_RESOURCE_ON; host.V_host_coord = ""; - surf_parse_host(&host); + sg_platf_new_host(&host); XBT_DEBUG(""); A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_SHARED; @@ -1677,11 +1548,25 @@ void routing_parse_Scluster(void) } surf_parse_link(); - xbt_dict_set(cluster_host_link,host_id,strdup(link_id),free); -// XBT_INFO("key '%s' Value '%s'",host_id,link_id); - ETag_surfxml_host(); ETag_surfxml_link(); + surf_parsing_link_up_down_t info = xbt_new0(s_surf_parsing_link_up_down_t, 1); + if (A_surfxml_link_sharing_policy == A_surfxml_link_sharing_policy_FULLDUPLEX){ + char* tmp_link = bprintf("%s_UP",link_id); + info->link_up = xbt_lib_get_or_null(link_lib, tmp_link, SURF_LINK_LEVEL); + free(tmp_link); + tmp_link = bprintf("%s_DOWN",link_id); + info->link_down = xbt_lib_get_or_null(link_lib, tmp_link, SURF_LINK_LEVEL); + free(tmp_link); + } + else{ + info->link_up = xbt_lib_get_or_null(link_lib, link_id, SURF_LINK_LEVEL); + info->link_down = info->link_up; + } + xbt_dict_set(cluster_host_link,host_id,info,xbt_free); + xbt_free(link_id); + xbt_free(host_id); + break; case 2: @@ -1725,7 +1610,7 @@ void routing_parse_Scluster(void) host.V_host_core = struct_cluster->S_cluster_core; host.V_host_state_initial = SURF_RESOURCE_ON; host.V_host_coord = ""; - surf_parse_host(&host); + sg_platf_new_host(&host); XBT_DEBUG(""); A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_SHARED; @@ -1757,12 +1642,25 @@ void routing_parse_Scluster(void) } surf_parse_link(); - xbt_dict_set(cluster_host_link,host_id,strdup(link_id),free); -// XBT_INFO("key '%s' Value '%s'",host_id,link_id); - - ETag_surfxml_host(); ETag_surfxml_link(); + surf_parsing_link_up_down_t info = xbt_new0(s_surf_parsing_link_up_down_t, 1); + if (A_surfxml_link_sharing_policy == A_surfxml_link_sharing_policy_FULLDUPLEX){ + char* tmp_link = bprintf("%s_UP",link_id); + info->link_up = xbt_lib_get_or_null(link_lib, tmp_link, SURF_LINK_LEVEL); + free(tmp_link); + tmp_link = bprintf("%s_DOWN",link_id); + info->link_down = xbt_lib_get_or_null(link_lib, tmp_link, SURF_LINK_LEVEL); + free(tmp_link); + } + else{ + info->link_up = xbt_lib_get_or_null(link_lib, link_id, SURF_LINK_LEVEL); + info->link_down = info->link_up; + } + xbt_dict_set(cluster_host_link,host_id,info,xbt_free); + xbt_free(link_id); + xbt_free(host_id); + } break; @@ -1793,7 +1691,7 @@ void routing_parse_Scluster(void) {A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_FATPIPE;} struct_lnk = xbt_new0(s_surf_parsing_link_arg_t, 1); - struct_lnk->V_link_id = xbt_strdup(link_backbone); + struct_lnk->V_link_id = link_backbone; struct_lnk->V_link_bandwidth = struct_cluster->S_cluster_bb_bw; struct_lnk->V_link_latency = struct_cluster->S_cluster_bb_lat; struct_lnk->V_link_bandwidth_file = NULL; @@ -2124,7 +2022,7 @@ static void routing_parse_Erandom(void) void routing_add_host(const char *host_id) { - parse_S_host_lua((char *) host_id, (char*)""); // FIXME propagate coordinate system to lua + parse_S_host(host_id, ""); // FIXME propagate coordinate system to lua } /*