X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b6a7838d1e4d157188e8d4dc381a11d0035361fe..f5b15e157009dbaef93d579aaf5f093864fc7cc7:/src/surf/network.c diff --git a/src/surf/network.c b/src/surf/network.c index f1b96a1eab..65c2fe4a0b 100644 --- a/src/surf/network.c +++ b/src/surf/network.c @@ -8,6 +8,8 @@ #include "xbt/log.h" #include "xbt/str.h" +#include "surf/surfxml_parse_values.h" + XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_network, surf, "Logging specific to the SURF network module"); @@ -153,7 +155,7 @@ static double (*bandwidth_constraint_callback) (double, double, double) = &constant_bandwidth_constraint; -static void* net_create_resource(char *name, +static void* net_create_resource(const char *name, double bw_initial, tmgr_trace_t bw_trace, double lat_initial, @@ -190,57 +192,24 @@ static void* net_create_resource(char *name, return nw_link; } -static void net_parse_link_init(void) +static void net_parse_link_init(sg_platf_link_cbarg_t link) { - char *name_link; - double bw_initial; - tmgr_trace_t bw_trace; - double lat_initial; - tmgr_trace_t lat_trace; - 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; XBT_DEBUG("link_CM02"); - 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); - lat_trace = tmgr_trace_new(A_surfxml_link_latency_file); - - xbt_assert((A_surfxml_link_state == A_surfxml_link_state_ON) - || (A_surfxml_link_state == - A_surfxml_link_state_OFF), "Invalid state"); - if (A_surfxml_link_state == A_surfxml_link_state_ON) - state_initial_link = SURF_RESOURCE_ON; - 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) - 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; - else 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); - if(policy_initial_link == SURF_LINK_FULLDUPLEX) + if(link->policy == SURF_LINK_FULLDUPLEX) { - net_create_resource(bprintf("%s_UP",name_link), bw_initial, bw_trace, - lat_initial, lat_trace, state_initial_link, state_trace, - policy_initial_link, xbt_dict_new()); - net_create_resource(bprintf("%s_DOWN",name_link), bw_initial, bw_trace, - lat_initial, lat_trace, state_initial_link, state_trace, - policy_initial_link, xbt_dict_new()); + net_create_resource(bprintf("%s_UP",link->id), link->bandwidth, link->bandwidth_trace, + link->latency, link->latency_trace, link->state, link->state_trace, + link->policy, link->properties); + net_create_resource(bprintf("%s_DOWN",link->id), link->bandwidth, link->bandwidth_trace, + link->latency, link->latency_trace, link->state, link->state_trace, + link->policy, NULL); // FIXME: We need to deep copy the properties or we won't be able to free it } else { - net_create_resource(name_link, bw_initial, bw_trace, - lat_initial, lat_trace, state_initial_link, state_trace, - policy_initial_link, xbt_dict_new()); + net_create_resource(xbt_strdup(link->id), link->bandwidth, link->bandwidth_trace, + link->latency, link->latency_trace, link->state, link->state_trace, + link->policy, link->properties); } } @@ -301,11 +270,11 @@ static void net_add_traces(void) } } -static void net_define_callbacks(const char *file) +static void net_define_callbacks(void) { /* Figuring out the network links */ - surfxml_add_callback(STag_surfxml_link_cb_list, &net_parse_link_init); - surfxml_add_callback(ETag_surfxml_platform_cb_list, &net_add_traces); + sg_platf_link_add_cb(net_parse_link_init); + sg_platf_postparse_add_cb(net_add_traces); } static int net_resource_used(void *resource_id) @@ -856,7 +825,7 @@ static void surf_network_model_init_internal(void) /************************************************************************/ /* New model based on LV08 and experimental results of MPI ping-pongs */ /************************************************************************/ -void surf_network_model_init_SMPI(const char *filename) +void surf_network_model_init_SMPI(void) { if (surf_network_model) @@ -865,7 +834,7 @@ void surf_network_model_init_SMPI(const char *filename) latency_factor_callback = &smpi_latency_factor; bandwidth_factor_callback = &smpi_bandwidth_factor; bandwidth_constraint_callback = &smpi_bandwidth_constraint; - net_define_callbacks(filename); + net_define_callbacks(); xbt_dynar_push(model_list, &surf_network_model); network_solve = lmm_solve; @@ -879,13 +848,13 @@ void surf_network_model_init_SMPI(const char *filename) /************************************************************************/ /* New model based on optimizations discussed during this thesis */ /************************************************************************/ -void surf_network_model_init_LegrandVelho(const char *filename) +void surf_network_model_init_LegrandVelho(void) { if (surf_network_model) return; surf_network_model_init_internal(); - net_define_callbacks(filename); + net_define_callbacks(); xbt_dynar_push(model_list, &surf_network_model); network_solve = lmm_solve; @@ -909,13 +878,13 @@ void surf_network_model_init_LegrandVelho(const char *filename) /* month = {oct}, */ /* year = {2002} */ /* } */ -void surf_network_model_init_CM02(const char *filename) +void surf_network_model_init_CM02(void) { if (surf_network_model) return; surf_network_model_init_internal(); - net_define_callbacks(filename); + net_define_callbacks(); xbt_dynar_push(model_list, &surf_network_model); network_solve = lmm_solve; @@ -923,12 +892,12 @@ void surf_network_model_init_CM02(const char *filename) "CM02", surf_network_model); } -void surf_network_model_init_Reno(const char *filename) +void surf_network_model_init_Reno(void) { if (surf_network_model) return; surf_network_model_init_internal(); - net_define_callbacks(filename); + net_define_callbacks(); xbt_dynar_push(model_list, &surf_network_model); lmm_set_default_protocol_function(func_reno_f, func_reno_fp, @@ -945,12 +914,12 @@ void surf_network_model_init_Reno(const char *filename) } -void surf_network_model_init_Reno2(const char *filename) +void surf_network_model_init_Reno2(void) { if (surf_network_model) return; surf_network_model_init_internal(); - net_define_callbacks(filename); + net_define_callbacks(); xbt_dynar_push(model_list, &surf_network_model); lmm_set_default_protocol_function(func_reno2_f, func_reno2_fp, @@ -967,12 +936,12 @@ void surf_network_model_init_Reno2(const char *filename) "Reno2", surf_network_model); } -void surf_network_model_init_Vegas(const char *filename) +void surf_network_model_init_Vegas(void) { if (surf_network_model) return; surf_network_model_init_internal(); - net_define_callbacks(filename); + net_define_callbacks(); xbt_dynar_push(model_list, &surf_network_model); lmm_set_default_protocol_function(func_vegas_f, func_vegas_fp,