X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/1d6c85f35e0fa3b04426cb359acb1a4ea9fa0d6a..c9120b61ec798b29e09f03c9fad3cea6704e0435:/src/surf/network.c?ds=sidebyside diff --git a/src/surf/network.c b/src/surf/network.c index d9f0192461..d9afd7be6e 100644 --- a/src/surf/network.c +++ b/src/surf/network.c @@ -26,7 +26,7 @@ double sg_bandwidth_factor = 1.0; /* default value; can be set by model or double sg_weight_S_parameter = 0.0; /* default value; can be set by model or from command line */ double sg_tcp_gamma = 0.0; -int sg_network_fullduplex = 0; +int sg_network_crosstraffic = 0; xbt_dict_t gap_lookup = NULL; @@ -40,7 +40,7 @@ static void gap_append(double size, const link_CM02_t link, surf_action_network_ if(sg_sender_gap > 0.0) { if(!gap_lookup) { - gap_lookup = xbt_dict_new(); + gap_lookup = xbt_dict_new_homogeneous(NULL); } fifo = (xbt_fifo_t)xbt_dict_get_or_null(gap_lookup, src); action->sender.gap = 0.0; @@ -413,7 +413,8 @@ static void net_update_actions_state(double now, double delta) } #ifdef HAVE_TRACING if (TRACE_is_enabled()) { - xbt_dynar_t route = routing_get_route(action->src_name, action->dst_name); + xbt_dynar_t route=NULL; + routing_get_route_and_latency(action->src_name, action->dst_name,&route,NULL); link_CM02_t link; unsigned int i; xbt_dynar_foreach(route, i, link) { @@ -584,12 +585,13 @@ static surf_action_t net_communicate(const char *src_name, xbt_dynar_t back_route = NULL; int constraints_per_variable = 0; - xbt_dynar_t route; - // I need to have the forward and backward routes at the same time, so I don't ask the routing to cleanup the route right away for me - routing_get_route_and_latency(src_name, dst_name, &route, &latency, 0); + xbt_dynar_t route = xbt_dynar_new(sizeof(void*),NULL); + // I need to have the forward and backward routes at the same time, so allocate "route". That way, the routing wont clean it up + routing_get_route_and_latency(src_name, dst_name, &route, &latency); - if (sg_network_fullduplex == 1) { - back_route = routing_get_route(dst_name, src_name); + if (sg_network_crosstraffic == 1) { + // FIXME: fill route directly + routing_get_route_and_latency(dst_name, src_name, &back_route,NULL); } /* LARGE PLATFORMS HACK: @@ -598,7 +600,7 @@ static surf_action_t net_communicate(const char *src_name, XBT_IN("(%s,%s,%g,%g)", src_name, dst_name, size, rate); /* LARGE PLATFORMS HACK: assert on total_route_size */ - xbt_assert(xbt_dynar_length(route) || latency, + xbt_assert(!xbt_dynar_is_empty(route) || latency, "You're trying to send data from %s to %s but there is no connection at all between these two hosts.", src_name, dst_name); @@ -644,7 +646,7 @@ static surf_action_t net_communicate(const char *src_name, bandwidth_constraint_callback(action->rate, bandwidth_bound, size); - if(xbt_dynar_length(route) > 0) { + if(!xbt_dynar_is_empty(route)) { link = *(link_CM02_t*)xbt_dynar_get_ptr(route, 0); gap_append(size, link, action); XBT_DEBUG("Comm %p: %s -> %s gap=%f (lat=%f)", @@ -696,7 +698,7 @@ static surf_action_t net_communicate(const char *src_name, action->variable, 1.0); } - if (sg_network_fullduplex == 1) { + if (sg_network_crosstraffic == 1) { XBT_DEBUG("Fullduplex active adding backward flow using 5%c", '%'); xbt_dynar_foreach(back_route, i, link) { lmm_expand(network_maxmin_system, link->lmm_resource.constraint, @@ -722,7 +724,9 @@ static surf_action_t net_communicate(const char *src_name, static xbt_dynar_t net_get_route(const char *src, const char *dst) { - return routing_get_route(src, dst); + xbt_dynar_t route=NULL; + routing_get_route_and_latency(src, dst,&route, NULL); + return route; } static double net_get_link_bandwidth(const void *link)