if (policy == SURF_LINK_FATPIPE)
lmm_constraint_shared(nw_link->constraint);
-
xbt_dict_set(surf_network_model->resource_set, name, nw_link,
surf_resource_free);
+
return nw_link;
}
static void ptask_parse_link_init(void)
{
- char *name_link;
double bw_initial;
tmgr_trace_t bw_trace;
double lat_initial;
e_surf_resource_state_t state_initial_link = SURF_RESOURCE_ON;
e_surf_link_sharing_policy_t policy_initial_link = SURF_LINK_SHARED;
tmgr_trace_t state_trace;
-
- name_link = xbt_strdup(A_surfxml_link_id);
+ char *name_link_up = NULL;
+ char *name_link_down = NULL;
+ char *name_link = NULL;
+
+ if(A_surfxml_link_sharing_policy ==
+ A_surfxml_link_sharing_policy_FULLDUPLEX) {
+ name_link_up = bprintf("%s_UP", A_surfxml_link_id);
+ name_link_down = bprintf("%s_DOWN", A_surfxml_link_id);
+ } else {
+ name_link = xbt_strdup(A_surfxml_link_id);
+ }
surf_parse_get_double(&bw_initial, A_surfxml_link_bandwidth);
bw_trace = tmgr_trace_new(A_surfxml_link_bandwidth_file);
surf_parse_get_double(&lat_initial, A_surfxml_link_latency);
else if (A_surfxml_link_state == A_surfxml_link_state_OFF)
state_initial_link = SURF_RESOURCE_OFF;
- if (A_surfxml_link_sharing_policy ==
- A_surfxml_link_sharing_policy_SHARED)
+ if (A_surfxml_link_sharing_policy == A_surfxml_link_sharing_policy_SHARED)
policy_initial_link = SURF_LINK_SHARED;
- else if (A_surfxml_link_sharing_policy ==
- A_surfxml_link_sharing_policy_FATPIPE)
- policy_initial_link = SURF_LINK_FATPIPE;
+ if (A_surfxml_link_sharing_policy == A_surfxml_link_sharing_policy_FATPIPE)
+ policy_initial_link = SURF_LINK_FATPIPE;
+ if (A_surfxml_link_sharing_policy == A_surfxml_link_sharing_policy_FULLDUPLEX)
+ policy_initial_link = SURF_LINK_FULLDUPLEX;
state_trace = tmgr_trace_new(A_surfxml_link_state_file);
current_property_set = xbt_dict_new();
- ptask_link_new(name_link, bw_initial, bw_trace, lat_initial, lat_trace,
- state_initial_link, state_trace, policy_initial_link,
- current_property_set);
+
+ if(policy_initial_link == SURF_LINK_FULLDUPLEX)
+ {
+ ptask_link_new(name_link_up, bw_initial, bw_trace, lat_initial, lat_trace,
+ state_initial_link, state_trace, policy_initial_link,
+ current_property_set);
+ ptask_link_new(name_link_down, bw_initial, bw_trace, lat_initial, lat_trace,
+ state_initial_link, state_trace, policy_initial_link,
+ xbt_dict_new());
+ }
+ else
+ {
+ ptask_link_new(name_link, bw_initial, bw_trace, lat_initial, lat_trace,
+ state_initial_link, state_trace, policy_initial_link,
+ current_property_set);
+ }
}
static void ptask_link_create_resource(char *name,
static void ptask_define_callbacks(const char *file)
{
/* Adding callback functions */
- surf_parse_reset_parser();
surfxml_add_callback(STag_surfxml_host_cb_list, &ptask_parse_cpu_init);
surfxml_add_callback(STag_surfxml_link_cb_list, &ptask_parse_link_init);
surfxml_add_callback(ETag_surfxml_platform_cb_list, &ptask_add_traces);
ptask_link_new(xbt_strdup("__loopback__"),
498000000, NULL, 0.000015, NULL,
SURF_RESOURCE_ON, NULL,
- SURF_LINK_FATPIPE, NULL));
+ SURF_LINK_FATPIPE, NULL),
+ ptask_get_link_latency);
}