xbt_dict_set(surf_network_model->resource_set, name, nw_link,
surf_resource_free);
#ifdef HAVE_TRACING
- TRACE_surf_link_declaration (name, bw_initial, lat_initial);
+ TRACE_surf_link_declaration (nw_link, name, bw_initial, lat_initial);
#endif
return nw_link;
if (((surf_action_network_CM02_t) action)->variable)
lmm_variable_free(network_maxmin_system,
((surf_action_network_CM02_t) action)->variable);
+#ifdef HAVE_TRACING
+ xbt_free (((surf_action_network_CM02_t)action)->src_name);
+ xbt_free (((surf_action_network_CM02_t)action)->dst_name);
+ if (action->category) xbt_free (action->category);
+#endif
free(action);
return 1;
}
return;
}
-int net_get_link_latency(surf_action_t action)
+#ifdef HAVE_LATENCY_BOUND_TRACKING
+int net_get_link_latency_limited(surf_action_t action)
{
return action->latency_limited;
}
+#endif
double net_action_get_remains(surf_action_t action)
{
#define VARIABLE(action) (*((lmm_variable_t*)(((char *) (action)) + xbt_swag_offset(s_action, variable) )))
xbt_swag_foreach(action, running_actions) {
- if( lmm_is_variable_limited_by_latency(action->variable) ){
- (action->generic_action).latency_limited = 1;
- }else{
- (action->generic_action).latency_limited = 0;
- }
+#ifdef HAVE_LATENCY_BOUND_TRACKING
+ if( lmm_is_variable_limited_by_latency(action->variable) ){
+ (action->generic_action).latency_limited = 1;
+ }else{
+ (action->generic_action).latency_limited = 0;
+ }
+#endif
if (action->latency > 0) {
if (min < 0)
min = action->latency;
action->weight);
}
#ifdef HAVE_TRACING
- xbt_dynar_t route = used_routing->get_route(action->src, action->dst);
+ xbt_dynar_t route = global_routing->get_route(action->src_name, action->dst_name);
link_CM02_t link;
unsigned int i;
xbt_dynar_foreach(route, i, link) {
- TRACE_surf_link_set_utilization (link->lmm_resource.generic_resource.name,
+ TRACE_surf_link_set_utilization (link,
action->generic_action.data, lmm_variable_getvalue(action->variable), now-delta, delta);
}
#endif
(nw_link->lmm_resource.power.peak *
nw_link->lmm_resource.power.scale));
#ifdef HAVE_TRACING
- TRACE_surf_link_set_bandwidth (date, nw_link->lmm_resource.generic_resource.name, sg_bandwidth_factor * (nw_link->lmm_resource.power.peak * nw_link->lmm_resource.power.scale));
+ TRACE_surf_link_set_bandwidth (date, nw_link, sg_bandwidth_factor * (nw_link->lmm_resource.power.peak * nw_link->lmm_resource.power.scale));
#endif
if (sg_weight_S_parameter > 0) {
while ((var = lmm_get_var_from_cnst
action =
surf_action_new(sizeof(s_surf_action_network_CM02_t), size,
surf_network_model, failed);
+#ifdef HAVE_LATENCY_BOUND_TRACKING
(action->generic_action).latency_limited = 0;
+#endif
xbt_swag_insert(action, action->generic_action.state_set);
action->rate = rate;
} /* LARGE PLATFORMS HACK:
expand also with src->link and dst->link */
+#ifdef HAVE_TRACING
+ action->src_name = xbt_new (char, strlen(src_name)+1);
+ strncpy (action->src_name, src_name, strlen(src_name)+1);
+ action->dst_name = xbt_new (char, strlen(dst_name)+1);
+ strncpy (action->dst_name, dst_name, strlen(dst_name)+1);
+#endif
XBT_OUT;
return (surf_action_t) action;
}
+static xbt_dynar_t net_get_route(const char *src, const char *dst)
+{
+ return global_routing->get_route( src, dst);
+}
+
static double net_get_link_bandwidth(const void *link)
{
surf_resource_lmm_t lmm = (surf_resource_lmm_t) link;
return lmm->power.peak * lmm->power.scale;
}
+static double net_get_link_latency(const void *link)
+{
+ return ((link_CM02_t) link)->lat_current;
+}
+
static int net_link_shared(const void *link)
{
return lmm_constraint_is_shared(((surf_resource_lmm_t) link)->constraint);
surf_network_model->action_cancel = net_action_cancel;
surf_network_model->action_recycle = net_action_recycle;
surf_network_model->get_remains = net_action_get_remains;
- surf_network_model->get_latency_limited = net_get_link_latency;
+#ifdef HAVE_LATENCY_BOUND_TRACKING
+ surf_network_model->get_latency_limited = net_get_link_latency_limited;
+#endif
surf_network_model->model_private->resource_used = net_resource_used;
surf_network_model->model_private->share_resources = net_share_resources;
surf_cpu_model->set_max_duration = net_action_set_max_duration;
surf_network_model->extension.network.communicate = net_communicate;
+ surf_network_model->extension.network.get_route = net_get_route;
surf_network_model->extension.network.get_link_bandwidth =
net_get_link_bandwidth;
+ surf_network_model->extension.network.get_link_latency =
+ net_get_link_latency;
surf_network_model->extension.network.link_shared = net_link_shared;
surf_network_model->extension.network.add_traces = net_add_traces;
surf_network_model->extension.network.create_resource = net_create_resource;