X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/829b0c9f55b2cda57fb9371026214dd3c646e9c1..a34d8237b8267686bbd259670f27da273ff5236e:/src/surf/surf_routing_cluster_torus.cpp diff --git a/src/surf/surf_routing_cluster_torus.cpp b/src/surf/surf_routing_cluster_torus.cpp index 972254cf10..a371297136 100644 --- a/src/surf/surf_routing_cluster_torus.cpp +++ b/src/surf/surf_routing_cluster_torus.cpp @@ -1,3 +1,9 @@ +/* Copyright (c) 2014-2015. The SimGrid Team. + * All rights reserved. */ + +/* This program is free software; you can redistribute it and/or modify it + * under the terms of the license (GNU LGPL) which comes with this package. */ + #include "surf_routing_cluster_torus.hpp" XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_route_cluster_torus, surf_route_cluster, "Torus Routing part of surf"); @@ -36,7 +42,7 @@ AsClusterTorus::~AsClusterTorus() void AsClusterTorus::create_links_for_node(sg_platf_cluster_cbarg_t cluster, int id, int rank, int position){ - s_sg_platf_link_cbarg_t link; + s_sg_platf_link_cbarg_t link = SG_PLATF_LINK_INITIALIZER; char* link_id; unsigned int j = 0; /** @@ -64,15 +70,13 @@ void AsClusterTorus::create_links_for_node(sg_platf_cluster_cbarg_t cluster, int s_surf_parsing_link_up_down_t info; if (link.policy == SURF_LINK_FULLDUPLEX) { char *tmp_link = bprintf("%s_UP", link_id); - info.link_up = - xbt_lib_get_or_null(link_lib, tmp_link, SURF_LINK_LEVEL); + info.link_up = Link::byName(tmp_link); 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); + info.link_down = Link::byName(tmp_link); free(tmp_link); } else { - info.link_up = xbt_lib_get_or_null(link_lib, link_id, SURF_LINK_LEVEL); + info.link_up = Link::byName(link_id); info.link_down = info.link_up; } /** @@ -114,7 +118,7 @@ void AsClusterTorus::parse_specific_arguments(sg_platf_cluster_cbarg_t cluster){ xbt_dynar_free(&dimensions); } -void AsClusterTorus::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_platf_route_cbarg_t route, double *lat){ +void AsClusterTorus::getRouteAndLatency(RoutingEdge *src, RoutingEdge *dst, sg_platf_route_cbarg_t route, double *lat){ XBT_VERB("torus_get_route_and_latency from '%s'[%d] to '%s'[%d]", src->getName(), src->getId(), @@ -127,7 +131,7 @@ void AsClusterTorus::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, xbt_dynar_push_as(route->link_list, void *, info.link_up); if (lat) - *lat += static_cast(info.link_up)->getLatency(); + *lat += static_cast(info.link_up)->getLatency(); return; } @@ -212,11 +216,17 @@ void AsClusterTorus::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, info = xbt_dynar_get_as(p_linkUpDownList,linkOffset, s_surf_parsing_link_up_down_t); - if (use_lnk_up == false) + if (use_lnk_up == false){ xbt_dynar_push_as(route->link_list,void*,info.link_down); - else + + if (lat) + *lat += static_cast(info.link_down)->getLatency(); + }else{ xbt_dynar_push_as(route->link_list,void*,info.link_up); + if (lat) + *lat += static_cast(info.link_up)->getLatency(); + } current_node = next_node; next_node = 0; }