From 247a4baf7c1b606f6fedfc7afe2173fcc55b9d74 Mon Sep 17 00:00:00 2001 From: navarrop Date: Tue, 28 Sep 2010 08:52:52 +0000 Subject: [PATCH] clean code and remove foreach and set git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@8247 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- include/surf/surfxml_parse.h | 20 +- src/include/surf/surf.h | 12 +- src/surf/network_gtnets.c | 18 +- src/surf/simgrid.dtd | 31 +- src/surf/surf.c | 2 +- src/surf/surf_private.h | 8 - src/surf/surf_routing.c | 56 +-- src/surf/surfxml_parse.c | 905 +++-------------------------------- 8 files changed, 116 insertions(+), 936 deletions(-) diff --git a/include/surf/surfxml_parse.h b/include/surf/surfxml_parse.h index cb3fa786fe..46585fe8e2 100644 --- a/include/surf/surfxml_parse.h +++ b/include/surf/surfxml_parse.h @@ -34,26 +34,18 @@ XBT_PUBLIC_DATA(xbt_dynar_t) STag_surfxml_argument_cb_list; XBT_PUBLIC_DATA(xbt_dynar_t) ETag_surfxml_argument_cb_list; XBT_PUBLIC_DATA(xbt_dynar_t) STag_surfxml_prop_cb_list; XBT_PUBLIC_DATA(xbt_dynar_t) ETag_surfxml_prop_cb_list; -XBT_PUBLIC_DATA(xbt_dynar_t) STag_surfxml_set_cb_list; -XBT_PUBLIC_DATA(xbt_dynar_t) ETag_surfxml_set_cb_list; -XBT_PUBLIC_DATA(xbt_dynar_t) STag_surfxml_foreach_cb_list; -XBT_PUBLIC_DATA(xbt_dynar_t) ETag_surfxml_foreach_cb_list; -XBT_PUBLIC_DATA(xbt_dynar_t) STag_surfxml_route_c_multi_cb_list; -XBT_PUBLIC_DATA(xbt_dynar_t) ETag_surfxml_route_c_multi_cb_list; -XBT_PUBLIC_DATA(xbt_dynar_t) STag_surfxml_cluster_cb_list; -XBT_PUBLIC_DATA(xbt_dynar_t) ETag_surfxml_cluster_cb_list; XBT_PUBLIC_DATA(xbt_dynar_t) STag_surfxml_trace_cb_list; XBT_PUBLIC_DATA(xbt_dynar_t) ETag_surfxml_trace_cb_list; XBT_PUBLIC_DATA(xbt_dynar_t) STag_surfxml_trace_c_connect_cb_list; XBT_PUBLIC_DATA(xbt_dynar_t) ETag_surfxml_trace_c_connect_cb_list; XBT_PUBLIC_DATA(xbt_dynar_t) STag_surfxml_random_cb_list; XBT_PUBLIC_DATA(xbt_dynar_t) ETag_surfxml_random_cb_list; -XBT_PUBLIC_DATA(xbt_dynar_t) STag_surfxml_AS_cb_list; // added by david -XBT_PUBLIC_DATA(xbt_dynar_t) ETag_surfxml_AS_cb_list; // added by david -XBT_PUBLIC_DATA(xbt_dynar_t) STag_surfxml_ASroute_cb_list; // added by david -XBT_PUBLIC_DATA(xbt_dynar_t) ETag_surfxml_ASroute_cb_list; // added by david -XBT_PUBLIC_DATA(xbt_dynar_t) STag_surfxml_bypassRoute_cb_list; // added by david -XBT_PUBLIC_DATA(xbt_dynar_t) ETag_surfxml_bypassRoute_cb_list; // added by david +XBT_PUBLIC_DATA(xbt_dynar_t) STag_surfxml_AS_cb_list; +XBT_PUBLIC_DATA(xbt_dynar_t) ETag_surfxml_AS_cb_list; +XBT_PUBLIC_DATA(xbt_dynar_t) STag_surfxml_ASroute_cb_list; +XBT_PUBLIC_DATA(xbt_dynar_t) ETag_surfxml_ASroute_cb_list; +XBT_PUBLIC_DATA(xbt_dynar_t) STag_surfxml_bypassRoute_cb_list; +XBT_PUBLIC_DATA(xbt_dynar_t) ETag_surfxml_bypassRoute_cb_list; XBT_PUBLIC(void) surf_parse_open(const char *file); XBT_PUBLIC(void) surf_parse_close(void); diff --git a/src/include/surf/surf.h b/src/include/surf/surf.h index c7a07c97f6..544870473f 100644 --- a/src/include/surf/surf.h +++ b/src/include/surf/surf.h @@ -663,14 +663,14 @@ XBT_PUBLIC(void) parse_platform_file(const char *file); /* Stores the sets */ XBT_PUBLIC_DATA(xbt_dict_t) set_list; -XBT_PUBLIC_DATA(void) manage_route(xbt_dict_t route_table, - const char *route_name, int action, - int isMultiRoute); -XBT_PUBLIC_DATA(int) route_action; +// XBT_PUBLIC_DATA(void) manage_route(xbt_dict_t route_table, +// const char *route_name, int action, +// int isMultiRoute); +// XBT_PUBLIC_DATA(int) route_action; /* This is used by all models when creating the routing table while parsing */ -XBT_PUBLIC_DATA(xbt_dict_t) route_table; -XBT_PUBLIC_DATA(xbt_dict_t) route_multi_table; +// XBT_PUBLIC_DATA(xbt_dict_t) route_table; +// XBT_PUBLIC_DATA(xbt_dict_t) route_multi_table; /* For the trace and trace:connect tag (store their content till the end of the parsing) */ diff --git a/src/surf/network_gtnets.c b/src/surf/network_gtnets.c index 6580578dcd..9dc7654533 100644 --- a/src/surf/network_gtnets.c +++ b/src/surf/network_gtnets.c @@ -265,20 +265,6 @@ static void update_actions_state(double now, double delta) trace_sent = action->generic_action.cost; } // tracing resource utilization -<<<<<<< HEAD - int src = TRACE_surf_gtnets_get_src (action); - int dst = TRACE_surf_gtnets_get_dst (action); - if (src != -1 && dst != -1){ - xbt_dynar_t route = used_routing->get_route(src, dst); - network_link_GTNETS_t link; - unsigned int i; - xbt_dynar_foreach(route, i, link) { - TRACE_surf_link_set_utilization (link->generic_resource.name, - action->generic_action.data, trace_sent/delta, now-delta, delta); - } - } -======= - // COMMENTED BY DAVID // int src = TRACE_surf_gtnets_get_src (action); // int dst = TRACE_surf_gtnets_get_dst (action); @@ -287,12 +273,10 @@ static void update_actions_state(double now, double delta) // network_link_GTNETS_t link; // unsigned int i; // xbt_dynar_foreach(route, i, link) { -// // TRACE_surf_link_set_utilization (link->generic_resource.name, -// action->generic_action.data, (action->generic_action.remains-remain)/delta, now-delta, delta); +// action->generic_action.data, trace_sent/delta, now-delta, delta); // } // } ->>>>>>> I comment all the calls to used_routing, in order to use global routing. #endif DEBUG1("Sent value returned by GTNetS : %f", sent); diff --git a/src/surf/simgrid.dtd b/src/surf/simgrid.dtd index 03e1f98aa2..bf0a712393 100644 --- a/src/surf/simgrid.dtd +++ b/src/surf/simgrid.dtd @@ -1,5 +1,6 @@ - + + @@ -25,15 +26,6 @@ - - - - - - - - - @@ -93,22 +85,5 @@ - + - - - - diff --git a/src/surf/surf.c b/src/surf/surf.c index 0245079e01..8cc98da906 100644 --- a/src/surf/surf.c +++ b/src/surf/surf.c @@ -341,7 +341,7 @@ void surf_exit(void) tmgr_finalize(); surf_parse_lex_destroy(); surf_parse_free_callbacks(); - xbt_dict_free(&route_table); +// xbt_dict_free(&route_table); // COMMENTED BY DAVID NOW = 0; /* Just in case the user plans to restart the simulation afterward */ } diff --git a/src/surf/surf_private.h b/src/surf/surf_private.h index ce5f31e0f2..002c56bf49 100644 --- a/src/surf/surf_private.h +++ b/src/surf/surf_private.h @@ -98,10 +98,6 @@ typedef struct { * Routing logic */ -//////////////////////////////////////////////////////////////////////////////// -// HERE START THE NEW STRUCTURES -//////////////////////////////////////////////////////////////////////////////// - typedef enum { SURF_NETWORK_ELEMENT_NULL = 0, /* NULL */ SURF_NETWORK_ELEMENT_HOST, /* host type */ @@ -184,10 +180,6 @@ struct s_routing_global { XBT_PUBLIC(void) routing_model_create(size_t size_of_link,void *loopback); -//////////////////////////////////////////////////////////////////////////////// -// HERE END THE NEW STRUCTURES -//////////////////////////////////////////////////////////////////////////////// - /* * Resource protected methods */ diff --git a/src/surf/surf_routing.c b/src/surf/surf_routing.c index 83e08a1def..9284d9ffbd 100644 --- a/src/surf/surf_routing.c +++ b/src/surf/surf_routing.c @@ -1460,40 +1460,40 @@ static void model_none_end(void) {} * list. Remember keep the null ending of the list. */ /*** Routing model structure ***/ -typedef struct { - s_routing_component_t generic_routing; - /* things that your routing model need */ -} s_routing_component_NEW_t,*routing_component_NEW_t; +// typedef struct { +// s_routing_component_t generic_routing; +// /* things that your routing model need */ +// } s_routing_component_NEW_t,*routing_component_NEW_t; /*** Parse routing model functions ***/ -static void model_NEW_set_processing_units(routing_component_t rc, const char* name) {} -static void model_NEW_set_autonomous_system(routing_component_t rc, const char* name) {} -static void model_NEW_set_route(routing_component_t rc, const char* src, const char* dst, route_t route) {} -static void model_NEW_set_ASroute(routing_component_t rc, const char* src, const char* dst, route_extended_t route) {} -static void model_NEW_set_bypassroute(routing_component_t rc, const char* src, const char* dst, route_extended_t e_route) {} +// static void model_NEW_set_processing_units(routing_component_t rc, const char* name) {} +// static void model_NEW_set_autonomous_system(routing_component_t rc, const char* name) {} +// static void model_NEW_set_route(routing_component_t rc, const char* src, const char* dst, route_t route) {} +// static void model_NEW_set_ASroute(routing_component_t rc, const char* src, const char* dst, route_extended_t route) {} +// static void model_NEW_set_bypassroute(routing_component_t rc, const char* src, const char* dst, route_extended_t e_route) {} /*** Business methods ***/ -static route_extended_t NEW_get_route(routing_component_t rc, const char* src,const char* dst) {return NULL;} -static route_extended_t NEW_get_bypass_route(routing_component_t rc, const char* src,const char* dst) {return NULL;} -static void NEW_finalize(routing_component_t rc) {} +// static route_extended_t NEW_get_route(routing_component_t rc, const char* src,const char* dst) {return NULL;} +// static route_extended_t NEW_get_bypass_route(routing_component_t rc, const char* src,const char* dst) {return NULL;} +// static void NEW_finalize(routing_component_t rc) {} /*** Creation routing model functions ***/ -static void* model_NEW_create(void) { - routing_component_full_t new_component = xbt_new0(s_routing_component_full_t,1); - new_component->generic_routing.set_processing_units = model_NEW_set_processing_units; - new_component->generic_routing.set_autonomous_system = model_NEW_set_autonomous_system; - new_component->generic_routing.set_route = model_NEW_set_route; - new_component->generic_routing.set_ASroute = model_NEW_set_ASroute; - new_component->generic_routing.set_bypassroute = model_NEW_set_bypassroute; - new_component->generic_routing.get_route = NEW_get_route; - new_component->generic_routing.get_bypass_route = NEW_get_bypass_route; - new_component->generic_routing.finalize = NEW_finalize; - /* initialization of internal structures */ - return new_component; -} /* mandatory */ -static void model_NEW_load(void) {} /* mandatory */ -static void model_NEW_unload(void) {} /* mandatory */ -static void model_NEW_end(void) {} /* mandatory */ +// static void* model_NEW_create(void) { +// routing_component_full_t new_component = xbt_new0(s_routing_component_full_t,1); +// new_component->generic_routing.set_processing_units = model_NEW_set_processing_units; +// new_component->generic_routing.set_autonomous_system = model_NEW_set_autonomous_system; +// new_component->generic_routing.set_route = model_NEW_set_route; +// new_component->generic_routing.set_ASroute = model_NEW_set_ASroute; +// new_component->generic_routing.set_bypassroute = model_NEW_set_bypassroute; +// new_component->generic_routing.get_route = NEW_get_route; +// new_component->generic_routing.get_bypass_route = NEW_get_bypass_route; +// new_component->generic_routing.finalize = NEW_finalize; +// /* initialization of internal structures */ +// return new_component; +// } /* mandatory */ +// static void model_NEW_load(void) {} /* mandatory */ +// static void model_NEW_unload(void) {} /* mandatory */ +// static void model_NEW_end(void) {} /* mandatory */ /* ************************************************************************** */ /* ************************* GENERIC PARSE FUNCTIONS ************************ */ diff --git a/src/surf/surfxml_parse.c b/src/surf/surfxml_parse.c index 0bd48084a6..65536fccec 100644 --- a/src/surf/surfxml_parse.c +++ b/src/surf/surfxml_parse.c @@ -29,34 +29,9 @@ xbt_dict_t trace_connect_list_latency = NULL; /* This buffer is used to store the original buffer before substituing it by out own buffer. Use full for the foreach tag */ static xbt_dynar_t surfxml_bufferstack_stack = NULL; int surfxml_bufferstack_size = 2048; -static char *old_buff = NULL; +// static char *old_buff = NULL; static void surf_parse_error(char *msg); -void surfxml_bufferstack_push(int new) -{ - if (!new) - old_buff = surfxml_bufferstack; - else { - xbt_dynar_push(surfxml_bufferstack_stack, &surfxml_bufferstack); - surfxml_bufferstack = xbt_new0(char, surfxml_bufferstack_size); - } -} - -void surfxml_bufferstack_pop(int new) -{ - if (!new) - surfxml_bufferstack = old_buff; - else { - free(surfxml_bufferstack); - xbt_dynar_pop(surfxml_bufferstack_stack, &surfxml_bufferstack); - } -} - -/* Stores the set name reffered to by the foreach tag */ -static char *foreach_set_name; -static xbt_dynar_t main_STag_surfxml_host_cb_list = NULL; -static xbt_dynar_t main_STag_surfxml_link_cb_list = NULL; - /* make sure these symbols are defined as strong ones in this file so that the linked can resolve them */ xbt_dynar_t STag_surfxml_platform_cb_list = NULL; xbt_dynar_t ETag_surfxml_platform_cb_list = NULL; @@ -76,41 +51,21 @@ xbt_dynar_t STag_surfxml_argument_cb_list = NULL; xbt_dynar_t ETag_surfxml_argument_cb_list = NULL; xbt_dynar_t STag_surfxml_prop_cb_list = NULL; xbt_dynar_t ETag_surfxml_prop_cb_list = NULL; -xbt_dynar_t STag_surfxml_set_cb_list = NULL; -xbt_dynar_t ETag_surfxml_set_cb_list = NULL; -xbt_dynar_t STag_surfxml_foreach_cb_list = NULL; -xbt_dynar_t ETag_surfxml_foreach_cb_list = NULL; -// xbt_dynar_t STag_surfxml_route_c_multi_cb_list = NULL; -// xbt_dynar_t ETag_surfxml_route_c_multi_cb_list = NULL; -// xbt_dynar_t STag_surfxml_cluster_cb_list = NULL; -// xbt_dynar_t ETag_surfxml_cluster_cb_list = NULL; xbt_dynar_t STag_surfxml_trace_cb_list = NULL; xbt_dynar_t ETag_surfxml_trace_cb_list = NULL; xbt_dynar_t STag_surfxml_trace_c_connect_cb_list = NULL; xbt_dynar_t ETag_surfxml_trace_c_connect_cb_list = NULL; xbt_dynar_t STag_surfxml_random_cb_list = NULL; xbt_dynar_t ETag_surfxml_random_cb_list = NULL; -xbt_dynar_t STag_surfxml_AS_cb_list = NULL; // addded by david -xbt_dynar_t ETag_surfxml_AS_cb_list = NULL; // addded by david -xbt_dynar_t STag_surfxml_ASroute_cb_list = NULL; // addded by david -xbt_dynar_t ETag_surfxml_ASroute_cb_list = NULL; // addded by david -xbt_dynar_t STag_surfxml_bypassRoute_cb_list = NULL; // addded by david -xbt_dynar_t ETag_surfxml_bypassRoute_cb_list = NULL; // addded by david - -/* Stores the sets defined in the XML */ -xbt_dict_t set_list = NULL; +xbt_dynar_t STag_surfxml_AS_cb_list = NULL; +xbt_dynar_t ETag_surfxml_AS_cb_list = NULL; +xbt_dynar_t STag_surfxml_ASroute_cb_list = NULL; +xbt_dynar_t ETag_surfxml_ASroute_cb_list = NULL; +xbt_dynar_t STag_surfxml_bypassRoute_cb_list = NULL; +xbt_dynar_t ETag_surfxml_bypassRoute_cb_list = NULL; xbt_dict_t current_property_set = NULL; - -/* For the route:multi tag */ -xbt_dict_t route_table = NULL; -// xbt_dict_t route_multi_table = NULL; -// xbt_dynar_t route_multi_elements = NULL; -static xbt_dynar_t route_link_list = NULL; -xbt_dynar_t links = NULL; -xbt_dynar_t keys = NULL; - -xbt_dict_t random_data_list = NULL; +xbt_dict_t random_data_list = NULL; /* dictionary of random generator data */ static xbt_dynar_t surf_input_buffer_stack = NULL; static xbt_dynar_t surf_file_to_parse_stack = NULL; @@ -120,12 +75,6 @@ static XBT_INLINE void surfxml_call_cb_functions(xbt_dynar_t); YY_BUFFER_STATE surf_input_buffer; FILE *surf_file_to_parse = NULL; -// static void convert_route_multi_to_routes(void); -// static void parse_route_elem(void); -static void parse_Stag_foreach(void); -static void parse_sets(void); -// static void parse_Stag_route_multi(void); -// static void parse_Etag_route_multi(void); static void parse_Stag_trace(void); static void parse_Etag_trace(void); static void parse_Stag_trace_c_connect(void); @@ -152,26 +101,18 @@ void surf_parse_free_callbacks(void) xbt_dynar_free(&ETag_surfxml_argument_cb_list); xbt_dynar_free(&STag_surfxml_prop_cb_list); xbt_dynar_free(&ETag_surfxml_prop_cb_list); - xbt_dynar_free(&STag_surfxml_set_cb_list); - xbt_dynar_free(&ETag_surfxml_set_cb_list); - xbt_dynar_free(&STag_surfxml_foreach_cb_list); - xbt_dynar_free(&ETag_surfxml_foreach_cb_list); -// xbt_dynar_free(&STag_surfxml_route_c_multi_cb_list); -// xbt_dynar_free(&ETag_surfxml_route_c_multi_cb_list); -// xbt_dynar_free(&STag_surfxml_cluster_cb_list); -// xbt_dynar_free(&ETag_surfxml_cluster_cb_list); xbt_dynar_free(&STag_surfxml_trace_cb_list); xbt_dynar_free(&ETag_surfxml_trace_cb_list); xbt_dynar_free(&STag_surfxml_trace_c_connect_cb_list); xbt_dynar_free(&ETag_surfxml_trace_c_connect_cb_list); xbt_dynar_free(&STag_surfxml_random_cb_list); xbt_dynar_free(&ETag_surfxml_random_cb_list); - xbt_dynar_free(&STag_surfxml_AS_cb_list); // addded by david - xbt_dynar_free(&ETag_surfxml_AS_cb_list); // addded by david - xbt_dynar_free(&STag_surfxml_ASroute_cb_list); // addded by david - xbt_dynar_free(&ETag_surfxml_ASroute_cb_list); // addded by david - xbt_dynar_free(&STag_surfxml_bypassRoute_cb_list); // addded by david - xbt_dynar_free(&ETag_surfxml_bypassRoute_cb_list); // addded by david + xbt_dynar_free(&STag_surfxml_AS_cb_list); + xbt_dynar_free(&ETag_surfxml_AS_cb_list); + xbt_dynar_free(&STag_surfxml_ASroute_cb_list); + xbt_dynar_free(&ETag_surfxml_ASroute_cb_list); + xbt_dynar_free(&STag_surfxml_bypassRoute_cb_list); + xbt_dynar_free(&ETag_surfxml_bypassRoute_cb_list); } void surf_parse_reset_parser(void) @@ -187,40 +128,26 @@ void surf_parse_reset_parser(void) ETag_surfxml_link_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); STag_surfxml_route_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); ETag_surfxml_route_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); - STag_surfxml_link_c_ctn_cb_list = - xbt_dynar_new(sizeof(void_f_void_t), NULL); - ETag_surfxml_link_c_ctn_cb_list = - xbt_dynar_new(sizeof(void_f_void_t), NULL); + STag_surfxml_link_c_ctn_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); + ETag_surfxml_link_c_ctn_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); STag_surfxml_process_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); ETag_surfxml_process_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); STag_surfxml_argument_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); ETag_surfxml_argument_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); STag_surfxml_prop_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); ETag_surfxml_prop_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); - STag_surfxml_set_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); - ETag_surfxml_set_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); - STag_surfxml_foreach_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); - ETag_surfxml_foreach_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); -// STag_surfxml_route_c_multi_cb_list = -// xbt_dynar_new(sizeof(void_f_void_t), NULL); -// ETag_surfxml_route_c_multi_cb_list = -// xbt_dynar_new(sizeof(void_f_void_t), NULL); -// STag_surfxml_cluster_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); -// ETag_surfxml_cluster_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); STag_surfxml_trace_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); ETag_surfxml_trace_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); - STag_surfxml_trace_c_connect_cb_list = - xbt_dynar_new(sizeof(void_f_void_t), NULL); - ETag_surfxml_trace_c_connect_cb_list = - xbt_dynar_new(sizeof(void_f_void_t), NULL); + STag_surfxml_trace_c_connect_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); + ETag_surfxml_trace_c_connect_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); STag_surfxml_random_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); ETag_surfxml_random_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); - STag_surfxml_AS_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); // addded by david - ETag_surfxml_AS_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); // addded by david - STag_surfxml_ASroute_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); // addded by david - ETag_surfxml_ASroute_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); // addded by david - STag_surfxml_bypassRoute_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); // addded by david - ETag_surfxml_bypassRoute_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); // addded by david + STag_surfxml_AS_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); + ETag_surfxml_AS_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); + STag_surfxml_ASroute_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); + ETag_surfxml_ASroute_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); + STag_surfxml_bypassRoute_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); + ETag_surfxml_bypassRoute_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); } void STag_surfxml_include(void) @@ -229,8 +156,7 @@ void STag_surfxml_include(void) xbt_dynar_push(surf_file_to_parse_stack, &surf_file_to_parse); surf_file_to_parse = surf_fopen(A_surfxml_include_file, "r"); - xbt_assert1((surf_file_to_parse), "Unable to open \"%s\"\n", - A_surfxml_include_file); + xbt_assert1((surf_file_to_parse), "Unable to open \"%s\"\n", A_surfxml_include_file); surf_input_buffer = surf_parse__create_buffer(surf_file_to_parse, 10); surf_parse__switch_to_buffer(surf_input_buffer); printf("STAG\n"); @@ -277,203 +203,28 @@ void STag_surfxml_platform(void) void ETag_surfxml_platform(void) { -// convert_route_multi_to_routes(); - surfxml_call_cb_functions(ETag_surfxml_platform_cb_list); - - xbt_dict_free(&random_data_list); -} - -void STag_surfxml_host(void) -{ - surfxml_call_cb_functions(STag_surfxml_host_cb_list); - -} - -void ETag_surfxml_host(void) -{ - surfxml_call_cb_functions(ETag_surfxml_host_cb_list); -} - -void STag_surfxml_router(void) -{ - surfxml_call_cb_functions(STag_surfxml_router_cb_list); -} - -void ETag_surfxml_router(void) -{ - surfxml_call_cb_functions(ETag_surfxml_router_cb_list); -} - -void STag_surfxml_link(void) -{ - surfxml_call_cb_functions(STag_surfxml_link_cb_list); -} - -void ETag_surfxml_link(void) -{ - surfxml_call_cb_functions(ETag_surfxml_link_cb_list); -} - -void STag_surfxml_route(void) -{ - surfxml_call_cb_functions(STag_surfxml_route_cb_list); -} - -void ETag_surfxml_route(void) -{ - surfxml_call_cb_functions(ETag_surfxml_route_cb_list); -} - -void STag_surfxml_link_c_ctn(void) -{ - surfxml_call_cb_functions(STag_surfxml_link_c_ctn_cb_list); -} - -void ETag_surfxml_link_c_ctn(void) -{ - surfxml_call_cb_functions(ETag_surfxml_link_c_ctn_cb_list); -} - -void STag_surfxml_process(void) -{ - surfxml_call_cb_functions(STag_surfxml_process_cb_list); -} - -void ETag_surfxml_process(void) -{ - surfxml_call_cb_functions(ETag_surfxml_process_cb_list); -} - -void STag_surfxml_argument(void) -{ - surfxml_call_cb_functions(STag_surfxml_argument_cb_list); -} - -void ETag_surfxml_argument(void) -{ - surfxml_call_cb_functions(ETag_surfxml_argument_cb_list); -} - -void STag_surfxml_prop(void) -{ - surfxml_call_cb_functions(STag_surfxml_prop_cb_list); + xbt_dict_free(&random_data_list); // FIXME: DUPLICATE } -void ETag_surfxml_prop(void) -{ - surfxml_call_cb_functions(ETag_surfxml_prop_cb_list); -} +#define parse_method(type,name) void type##Tag_surfxml_##name(void) { surfxml_call_cb_functions(type##Tag_surfxml_##name##_cb_list); } -void STag_surfxml_set(void) -{ - surfxml_call_cb_functions(STag_surfxml_set_cb_list); -} - -void ETag_surfxml_set(void) -{ - surfxml_call_cb_functions(ETag_surfxml_set_cb_list); -} - -void STag_surfxml_foreach(void) -{ - /* Save the current buffer */ - surfxml_bufferstack_push(0); - surfxml_call_cb_functions(STag_surfxml_foreach_cb_list); -} - -void ETag_surfxml_foreach(void) -{ - surfxml_call_cb_functions(ETag_surfxml_foreach_cb_list); - - /* free the temporary dynar and restore original */ - xbt_dynar_free(&STag_surfxml_host_cb_list); - STag_surfxml_host_cb_list = main_STag_surfxml_host_cb_list; - - /* free the temporary dynar and restore original */ - xbt_dynar_free(&STag_surfxml_link_cb_list); - STag_surfxml_link_cb_list = main_STag_surfxml_link_cb_list; -} - -// void STag_surfxml_route_c_multi(void) -// { -// surfxml_call_cb_functions(STag_surfxml_route_c_multi_cb_list); -// } -// -// void ETag_surfxml_route_c_multi(void) -// { -// surfxml_call_cb_functions(ETag_surfxml_route_c_multi_cb_list); -// } -// -// void STag_surfxml_cluster(void) -// { -// surfxml_call_cb_functions(STag_surfxml_cluster_cb_list); -// } -// -// void ETag_surfxml_cluster(void) -// { -// surfxml_call_cb_functions(ETag_surfxml_cluster_cb_list); -// } - -void STag_surfxml_trace(void) -{ - surfxml_call_cb_functions(STag_surfxml_trace_cb_list); -} +parse_method(S,host); parse_method(E,host); +parse_method(S,router); parse_method(E,router); +parse_method(S,link); parse_method(E,link); +parse_method(S,route); parse_method(E,route); +parse_method(S,link_c_ctn); parse_method(E,link_c_ctn); +parse_method(S,process); parse_method(E,process); +parse_method(S,argument); parse_method(E,argument); +parse_method(S,prop); parse_method(E,prop); +parse_method(S,trace); parse_method(E,trace); +parse_method(S,trace_c_connect); parse_method(E,trace_c_connect); +parse_method(S,random); parse_method(E,random); +parse_method(S,AS); parse_method(E,AS); +parse_method(S,ASroute); parse_method(E,ASroute); +parse_method(S,bypassRoute); parse_method(E,bypassRoute); -void ETag_surfxml_trace(void) -{ - surfxml_call_cb_functions(ETag_surfxml_trace_cb_list); -} - -void STag_surfxml_trace_c_connect(void) -{ - surfxml_call_cb_functions(STag_surfxml_trace_c_connect_cb_list); -} - -void ETag_surfxml_trace_c_connect(void) -{ - surfxml_call_cb_functions(ETag_surfxml_trace_c_connect_cb_list); -} - -void STag_surfxml_random(void) -{ - surfxml_call_cb_functions(STag_surfxml_random_cb_list); -} - -void ETag_surfxml_random(void) -{ - surfxml_call_cb_functions(ETag_surfxml_random_cb_list); -} - -void STag_surfxml_AS(void) // addded by david -{ - surfxml_call_cb_functions(STag_surfxml_AS_cb_list); -} - -void ETag_surfxml_AS(void) // addded by david -{ - surfxml_call_cb_functions(ETag_surfxml_AS_cb_list); -} - -void STag_surfxml_ASroute(void) // addded by david -{ - surfxml_call_cb_functions(STag_surfxml_ASroute_cb_list); -} - -void ETag_surfxml_ASroute(void) // addded by david -{ - surfxml_call_cb_functions(ETag_surfxml_ASroute_cb_list); -} - -void STag_surfxml_bypassRoute(void) // addded by david -{ - surfxml_call_cb_functions(STag_surfxml_bypassRoute_cb_list); -} - -void ETag_surfxml_bypassRoute(void) // addded by david -{ - surfxml_call_cb_functions(ETag_surfxml_bypassRoute_cb_list); -} +/* Open and Close parse file */ void surf_parse_open(const char *file) { @@ -505,13 +256,15 @@ void surf_parse_close(void) xbt_dynar_free(&surf_input_buffer_stack); if (surf_file_to_parse_stack) xbt_dynar_free(&surf_file_to_parse_stack); - + if (surf_file_to_parse) { surf_parse__delete_buffer(surf_input_buffer); fclose(surf_file_to_parse); } } +/* Parse Function */ + static int _surf_parse(void) { return surf_parse_lex(); @@ -525,11 +278,9 @@ void surf_parse_error(char *msg) abort(); } - void surf_parse_get_double(double *value, const char *string) { int ret = 0; - ret = sscanf(string, "%lg", value); if (ret != 1) surf_parse_error(bprintf("%s is not a double", string)); @@ -538,22 +289,12 @@ void surf_parse_get_double(double *value, const char *string) void surf_parse_get_int(int *value, const char *string) { int ret = 0; - ret = sscanf(string, "%d", value); if (ret != 1) surf_parse_error(bprintf("%s is not an integer", string)); } -void parse_properties(void) -{ - char *value = NULL; - - if (!current_property_set) - current_property_set = xbt_dict_new(); - - value = xbt_strdup(A_surfxml_prop_value); - xbt_dict_set(current_property_set, A_surfxml_prop_id, value, free); -} +/* Aux parse functions */ void surfxml_add_callback(xbt_dynar_t cb_list, void_f_void_t function) { @@ -582,24 +323,14 @@ static XBT_INLINE void surfxml_call_cb_functions(xbt_dynar_t cb_list) } } -static void parse_route_set_endpoints(void) -{ - route_link_list = xbt_dynar_new(sizeof(char *), NULL); -} +/* Init and free parse data */ static void init_data(void) { - xbt_dict_free(&route_table); - xbt_dynar_free(&route_link_list); - route_table = xbt_dict_new(); - if (!surfxml_bufferstack_stack) surfxml_bufferstack_stack = xbt_dynar_new(sizeof(char *), NULL); -// route_multi_table = xbt_dict_new(); -// route_multi_elements = xbt_dynar_new(sizeof(char *), NULL); + traces_set_list = xbt_dict_new(); - if (set_list == NULL) - set_list = xbt_dict_new(); trace_connect_list_host_avail = xbt_dict_new(); trace_connect_list_power = xbt_dict_new(); @@ -608,51 +339,17 @@ static void init_data(void) trace_connect_list_latency = xbt_dict_new(); random_data_list = xbt_dict_new(); -// surfxml_add_callback(STag_surfxml_prop_cb_list, &parse_properties); -// surfxml_add_callback(ETag_surfxml_link_c_ctn_cb_list, &parse_route_elem); -// surfxml_add_callback(STag_surfxml_route_cb_list, &parse_route_set_endpoints); -// surfxml_add_callback(STag_surfxml_set_cb_list, &parse_sets); -// surfxml_add_callback(STag_surfxml_route_c_multi_cb_list, &parse_Stag_route_multi); -// surfxml_add_callback(ETag_surfxml_route_c_multi_cb_list, &parse_Etag_route_multi); -// surfxml_add_callback(STag_surfxml_foreach_cb_list, &parse_Stag_foreach); -// surfxml_add_callback(STag_surfxml_trace_cb_list, &parse_Stag_trace); -// surfxml_add_callback(ETag_surfxml_trace_cb_list, &parse_Etag_trace); -// surfxml_add_callback(STag_surfxml_trace_c_connect_cb_list, &parse_Stag_trace_c_connect); -// surfxml_add_callback(STag_surfxml_random_cb_list, &init_randomness); -// surfxml_add_callback(ETag_surfxml_random_cb_list, &add_randomness); + surfxml_add_callback(STag_surfxml_random_cb_list, &init_randomness); + surfxml_add_callback(ETag_surfxml_random_cb_list, &add_randomness); + + surfxml_add_callback(STag_surfxml_prop_cb_list, &parse_properties); + surfxml_add_callback(STag_surfxml_trace_cb_list, &parse_Stag_trace); + surfxml_add_callback(ETag_surfxml_trace_cb_list, &parse_Etag_trace); + surfxml_add_callback(STag_surfxml_trace_c_connect_cb_list, &parse_Stag_trace_c_connect); } static void free_data(void) { - char *key, *data; - xbt_dict_cursor_t cursor = NULL; - char *name; - unsigned int cpt = 0; - - xbt_dict_foreach(route_table, cursor, key, data) { - xbt_dynar_t links = (xbt_dynar_t) data; - char *name; - unsigned int cpt = 0; - - xbt_dynar_foreach(links, cpt, name) free(name); - xbt_dynar_free(&links); - } - xbt_dict_free(&route_table); - route_link_list = NULL; - -// xbt_dict_free(&route_multi_table); -// -// xbt_dynar_foreach(route_multi_elements, cpt, name) free(name); -// xbt_dynar_free(&route_multi_elements); - - xbt_dict_foreach(set_list, cursor, key, data) { - xbt_dynar_t set = (xbt_dynar_t) data; - - xbt_dynar_foreach(set, cpt, name) free(name); - xbt_dynar_free(&set); - } - xbt_dict_free(&set_list); - xbt_dynar_free(&surfxml_bufferstack_stack); xbt_dict_free(&traces_set_list); @@ -664,6 +361,8 @@ static void free_data(void) xbt_dict_free(&traces_set_list); } +/* Here start parse */ + void parse_platform_file(const char *file) { int parse_status; @@ -672,439 +371,21 @@ void parse_platform_file(const char *file) parse_status = surf_parse(); free_data(); surf_parse_close(); - if (parse_status) - xbt_dict_free(&random_data_list); + if (parse_status) xbt_dict_free(&random_data_list); // FIXME: DUPLICATE xbt_assert1(!parse_status, "Parse error in %s", file); } -/* Functions to bypass route tag. Used by the route:multi tag */ - -// static void parse_make_temporary_route(const char *src, const char *dst, -// int action) -// { -// int AX_ptr = 0; -// -// A_surfxml_route_action = action; -// SURFXML_BUFFER_SET(route_src, src); -// SURFXML_BUFFER_SET(route_dst, dst); -// } - -/* Functions for the sets and foreach tags */ - -static void parse_sets(void) -{ - char *id, *suffix, *prefix, *radical; - int start, end; - xbt_dynar_t radical_elements; - xbt_dynar_t radical_ends; - xbt_dynar_t current_set; - char *value, *groups; - int i; - unsigned int iter; - - id = xbt_strdup(A_surfxml_set_id); - prefix = xbt_strdup(A_surfxml_set_prefix); - suffix = xbt_strdup(A_surfxml_set_suffix); - radical = xbt_strdup(A_surfxml_set_radical); - - if (xbt_dict_get_or_null(set_list, id)) - surf_parse_error(bprintf - ("Set '%s' declared several times in the platform file.", - id)); - - current_set = xbt_dynar_new(sizeof(char *), NULL); - - radical_elements = xbt_str_split(radical, ","); - xbt_dynar_foreach(radical_elements, iter, groups) { - - radical_ends = xbt_str_split(groups, "-"); - switch (xbt_dynar_length(radical_ends)) { - case 1: - surf_parse_get_int(&start, xbt_dynar_get_as(radical_ends, 0, char *)); - value = bprintf("%s%d%s", prefix, start, suffix); - xbt_dynar_push(current_set, &value); - break; - - case 2: - - surf_parse_get_int(&start, xbt_dynar_get_as(radical_ends, 0, char *)); - surf_parse_get_int(&end, xbt_dynar_get_as(radical_ends, 1, char *)); - - - for (i = start; i <= end; i++) { - value = bprintf("%s%d%s", prefix, i, suffix); - xbt_dynar_push(current_set, &value); - } - break; - - default: - surf_parse_error(xbt_strdup("Malformed radical")); - } - - xbt_dynar_free(&radical_ends); - } - - xbt_dict_set(set_list, id, current_set, NULL); - - xbt_dynar_free(&radical_elements); - free(radical); - free(suffix); - free(prefix); - free(id); -} - -static void parse_host_foreach(void){ - - xbt_dynar_t names = NULL; - unsigned int cpt = 0; - char *name; - xbt_dict_cursor_t cursor = NULL; - char *key, *data; - - const char *surfxml_host_power = A_surfxml_host_power; - const char *surfxml_host_availability = A_surfxml_host_availability; - const char *surfxml_host_availability_file = A_surfxml_host_availability_file; - const char *surfxml_host_state_file = A_surfxml_host_state_file; - - xbt_dict_t cluster_host_props = current_property_set; - - names = xbt_dict_get_or_null(set_list, foreach_set_name); - if (!names) - surf_parse_error(bprintf("Set name '%s' used in not found.", - foreach_set_name)); - if (strcmp(A_surfxml_host_id, "$1")) - surf_parse_error(bprintf - ("The host id within should point to the foreach set_id (use $1 instead of %s)", - A_surfxml_host_id)); - - - /* foreach name in set call the main host callback */ - xbt_dynar_foreach(names, cpt, name) { - int AX_ptr = 0; /* needed by the SURFXML_BUFFER_SET macro */ - - surfxml_bufferstack_push(1); - - SURFXML_BUFFER_SET(host_id, name); - SURFXML_BUFFER_SET(host_power, surfxml_host_power /*hostPower */ ); - SURFXML_BUFFER_SET(host_availability, surfxml_host_availability); - SURFXML_BUFFER_SET(host_availability_file, surfxml_host_availability_file); - SURFXML_BUFFER_SET(host_state_file, surfxml_host_state_file); - - surfxml_call_cb_functions(main_STag_surfxml_host_cb_list); - - xbt_dict_foreach(cluster_host_props, cursor, key, data) { - xbt_dict_set(current_property_set, xbt_strdup(key), xbt_strdup(data), - free); - } +/* Prop tag functions */ - /* Call the (unmodified) callbacks of , if any */ - surfxml_call_cb_functions(ETag_surfxml_host_cb_list); - surfxml_bufferstack_pop(1); - } - - current_property_set = xbt_dict_new(); - - surfxml_bufferstack_pop(0); -} - -static void parse_link_foreach(void) { - const char *surfxml_link_bandwidth = A_surfxml_link_bandwidth; - const char *surfxml_link_bandwidth_file = A_surfxml_link_bandwidth_file; - const char *surfxml_link_latency = A_surfxml_link_latency; - const char *surfxml_link_latency_file = A_surfxml_link_latency_file; - const char *surfxml_link_state_file = A_surfxml_link_state_file; - - xbt_dynar_t names = NULL; - unsigned int cpt = 0; - char *name; - xbt_dict_cursor_t cursor = NULL; - char *key, *data; - - xbt_dict_t cluster_link_props = current_property_set; - - names = xbt_dict_get_or_null(set_list, foreach_set_name); - if (!names) - surf_parse_error(bprintf("Set name '%s' used in not found.", - foreach_set_name)); - if (strcmp(A_surfxml_link_id, "$1")) - surf_parse_error(bprintf - ("The host id within should point to the foreach set_id (use $1 instead of %s)", - A_surfxml_link_id)); - - /* for each name in set call the main link callback */ - xbt_dynar_foreach(names, cpt, name) { - int AX_ptr = 0; /* needed by the SURFXML_BUFFER_SET */ - - surfxml_bufferstack_push(1); - - SURFXML_BUFFER_SET(link_id, name); - SURFXML_BUFFER_SET(link_bandwidth, surfxml_link_bandwidth); - SURFXML_BUFFER_SET(link_bandwidth_file, surfxml_link_bandwidth_file); - SURFXML_BUFFER_SET(link_latency, surfxml_link_latency); - SURFXML_BUFFER_SET(link_latency_file, surfxml_link_latency_file); - SURFXML_BUFFER_SET(link_state_file, surfxml_link_state_file); - - surfxml_call_cb_functions(main_STag_surfxml_link_cb_list); - - xbt_dict_foreach(cluster_link_props, cursor, key, data) { - xbt_dict_set(current_property_set, xbt_strdup(key), xbt_strdup(data), - free); - } - - /* Call the (unmodified) callbacks of , if any */ - surfxml_call_cb_functions(ETag_surfxml_link_cb_list); - surfxml_bufferstack_pop(1); - } - - current_property_set = xbt_dict_new(); - - surfxml_bufferstack_pop(0); - free(foreach_set_name); - foreach_set_name = NULL; -} - -static void parse_Stag_foreach(void) +void parse_properties(void) { - /* save the host & link callbacks */ - main_STag_surfxml_host_cb_list = STag_surfxml_host_cb_list; - main_STag_surfxml_link_cb_list = STag_surfxml_link_cb_list; - - /* redefine host & link callbacks to be used only by the foreach tag */ - STag_surfxml_host_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); - STag_surfxml_link_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); - - surfxml_add_callback(STag_surfxml_host_cb_list, &parse_host_foreach); - surfxml_add_callback(STag_surfxml_link_cb_list, &parse_link_foreach); - - /* get set name */ - foreach_set_name = xbt_strdup(A_surfxml_foreach_set_id); + char *value = NULL; + if (!current_property_set) + current_property_set = xbt_dict_new(); // Maybe, it should be make a error + value = xbt_strdup(A_surfxml_prop_value); + xbt_dict_set(current_property_set, A_surfxml_prop_id, value, free); } -/* Route:multi functions */ - -// static int route_multi_size = 0; -// static char *src_name, *dst_name; -// static int is_symmetric_route; - -// static void parse_route_elem(void) -// { -// char *val; -// -// val = xbt_strdup(A_surfxml_link_c_ctn_id); -// -// xbt_dynar_push(route_link_list, &val); -// //INFO2("Push %s (size now:%ld)",val,xbt_dynar_length(route_link_list)); -// } - -// static void parse_Stag_route_multi(void) -// { -// src_name = xbt_strdup(A_surfxml_route_c_multi_src); -// dst_name = xbt_strdup(A_surfxml_route_c_multi_dst); -// route_action = A_surfxml_route_c_multi_action; -// is_symmetric_route = A_surfxml_route_c_multi_symmetric; -// route_multi_size++; -// -// route_link_list = xbt_dynar_new(sizeof(char *), &xbt_free_ref); -// } - -/* - This function is used to append or override the contents of an already existing route in the case a new one with its name is found. - The decision is based upon the value of action specified in the xml route:multi attribute action - */ -// void manage_route(xbt_dict_t routing_table, const char *route_name, -// int action, int isMultiRoute) -// { -// unsigned int cpt; -// xbt_dynar_t links; -// char *value; -// -// /* get already existing list if it exists */ -// links = xbt_dict_get_or_null(routing_table, route_name); -// DEBUG3("ROUTE: %s (action:%s; len:%ld)", route_name, -// (action==A_surfxml_route_action_OVERRIDE?"override":( -// action==A_surfxml_route_action_PREPEND?"prepend":"postpend")), -// (links?xbt_dynar_length(links):0)); -// -// if (links != NULL) { -// switch (action) { -// case A_surfxml_route_action_PREPEND: /* add existing links at the end; route_link_list + links */ -// xbt_dynar_foreach(links, cpt, value) { -// xbt_dynar_push(route_link_list, &value); -// } -// xbt_dynar_free(&links); -// break; -// case A_surfxml_route_action_POSTPEND: /* add existing links in front; links + route_link_list */ -// xbt_dynar_foreach(route_link_list, cpt, value) { -// xbt_dynar_push(links, &value); -// } -// xbt_dynar_free(&route_link_list); -// route_link_list = links; -// break; -// case A_surfxml_route_action_OVERRIDE: -// xbt_dynar_free(&links); -// break; -// default: -// xbt_die(bprintf("While dealing with routes of %s, got action=%d. Please report this bug.", -// route_name,action)); -// break; -// } -// -// } -// /* this is the final route; do not add if name is a set; add only if name is in set list */ -// if (!isMultiRoute) { -// xbt_dict_set(routing_table, route_name, route_link_list, NULL); -// } -// } - -// static void parse_Etag_route_multi(void) -// { -// char *route_name; -// -// route_name = -// bprintf("%s#%s#%d#%d#%d", src_name, dst_name, route_action, -// is_symmetric_route, route_multi_size); -// -// xbt_dynar_push(route_multi_elements, &route_name); -// -// /* Add route */ -// xbt_dict_set(route_multi_table, route_name, route_link_list, NULL); -// /* add symmetric if it is the case */ -// if (is_symmetric_route == 1) { -// char *symmetric_name = -// bprintf("%s#%s#%d#%d#%d", dst_name, src_name, route_action, -// !is_symmetric_route, route_multi_size); -// -// xbt_dict_set(route_multi_table, symmetric_name, route_link_list, NULL); -// xbt_dynar_push(route_multi_elements, &symmetric_name); -// is_symmetric_route = 0; -// } -// free(src_name); -// free(dst_name); -// } - -// static void add_multi_links(const char *src, const char *dst, -// xbt_dynar_t links, const char *src_name, -// const char *dst_name) -// { -// unsigned int cpt; -// char *value, *val; -// -// surfxml_bufferstack_push(1); -// -// parse_make_temporary_route(src_name, dst_name, route_action); -// surfxml_call_cb_functions(STag_surfxml_route_cb_list); -// DEBUG2("\tADDING ROUTE: %s -> %s", src_name, dst_name); -// /* Build link list */ -// xbt_dynar_foreach(links, cpt, value) { -// if (strcmp(value, src) == 0) -// val = xbt_strdup(src_name); -// else if (strcmp(value, dst) == 0) -// val = xbt_strdup(dst_name); -// else if (strcmp(value, "$dst") == 0) -// val = xbt_strdup(dst_name); -// else if (strcmp(value, "$src") == 0) -// val = xbt_strdup(src_name); -// else -// val = xbt_strdup(value); -// DEBUG1("\t\tELEMENT: %s", val); -// xbt_dynar_push(route_link_list, &val); -// } -// surfxml_call_cb_functions(ETag_surfxml_route_cb_list); -// surfxml_bufferstack_pop(1); -// } - -// static void convert_route_multi_to_routes(void) -// { -// xbt_dict_cursor_t cursor_w; -// int symmetric; -// unsigned int cpt, cpt2, cursor; -// char *src_host_name, *dst_host_name, *key, *src, *dst, *val, *key_w, -// *data_w; -// const char *sep = "#"; -// xbt_dict_t set = NULL; -// xbt_dynar_t src_names = NULL, dst_names = NULL, links; -// -// if (!route_multi_elements) -// return; -// -// if (surf_cpu_model) -// set = surf_model_resource_set(surf_cpu_model); -// if (surf_workstation_model != NULL && -// surf_model_resource_set(surf_workstation_model) != NULL && -// xbt_dict_length(surf_model_resource_set(surf_workstation_model)) > 0) -// set = surf_model_resource_set(surf_workstation_model); -// -// -// surfxml_bufferstack_push(0); -// /* Get all routes in the exact order they were entered in the platform file */ -// xbt_dynar_foreach(route_multi_elements, cursor, key) { -// /* Get links for the route */ -// links = (xbt_dynar_t) xbt_dict_get_or_null(route_multi_table, key); -// keys = xbt_str_split_str(key, sep); -// /* Get route ends */ -// src = xbt_dynar_get_as(keys, 0, char *); -// dst = xbt_dynar_get_as(keys, 1, char *); -// route_action = atoi(xbt_dynar_get_as(keys, 2, char *)); -// symmetric = atoi(xbt_dynar_get_as(keys, 3, char *)); -// -// /* Create the dynar of src and dst hosts for the new routes */ -// /* NOTE: src and dst can be either set names or simple host names */ -// src_names = (xbt_dynar_t) xbt_dict_get_or_null(set_list, src); -// dst_names = (xbt_dynar_t) xbt_dict_get_or_null(set_list, dst); -// /* Add to dynar even if they are simple names */ -// if (src_names == NULL) { -// src_names = xbt_dynar_new(sizeof(char *), &xbt_free_ref); -// val = xbt_strdup(src); -// xbt_dynar_push(src_names, &val); -// if (strcmp(val, "$*") != 0 && NULL == xbt_dict_get_or_null(set, val)) -// THROW3(unknown_error, 0, -// "(In route:multi (%s -> %s) source %s does not exist (not a set or a host)", -// src, dst, src); -// } -// if (dst_names == NULL) { -// dst_names = xbt_dynar_new(sizeof(char *), &xbt_free_ref); -// val = xbt_strdup(dst); -// if (strcmp(val, "$*") != 0 && NULL == xbt_dict_get_or_null(set, val)) -// THROW3(unknown_error, 0, -// "(In route:multi (%s -> %s) destination %s does not exist (not a set or a host)", -// src, dst, dst); -// xbt_dynar_push(dst_names, &val); -// } -// -// /* Build the routes */ -// DEBUG2("ADDING MULTI ROUTE: %s -> %s", xbt_dynar_get_as(keys, 0, char *), -// xbt_dynar_get_as(keys, 1, char *)); -// xbt_dynar_foreach(src_names, cpt, src_host_name) { -// xbt_dynar_foreach(dst_names, cpt2, dst_host_name) { -// /* If dst is $* then set this route to have its dst point to all hosts */ -// if (strcmp(src_host_name, "$*") != 0 -// && strcmp(dst_host_name, "$*") == 0) { -// xbt_dict_foreach(set, cursor_w, key_w, data_w) { -// //int n = xbt_dynar_member(src_names, (char*)key_w); -// add_multi_links(src, dst, links, src_host_name, key_w); -// } -// } -// /* If src is $* then set this route to have its dst point to all hosts */ -// if (strcmp(src_host_name, "$*") == 0 -// && strcmp(dst_host_name, "$*") != 0) { -// xbt_dict_foreach(set, cursor_w, key_w, data_w) { -// // if (!symmetric || (symmetric && !contains(dst_names, key_w))) -// add_multi_links(src, dst, links, key_w, dst_host_name); -// } -// } -// /* if none of them are equal to $* */ -// if (strcmp(src_host_name, "$*") != 0 -// && strcmp(dst_host_name, "$*") != 0) { -// add_multi_links(src, dst, links, src_host_name, dst_host_name); -// } -// } -// } -// xbt_dynar_free(&keys); -// } -// surfxml_bufferstack_pop(0); -// } - - /* Trace management functions */ static double trace_periodicity = -1.0; @@ -1209,18 +490,15 @@ static void init_randomness(void) surf_parse_get_double(&random_min, A_surfxml_random_min); surf_parse_get_double(&random_max, A_surfxml_random_max); surf_parse_get_double(&random_mean, A_surfxml_random_mean); - surf_parse_get_double(&random_std_deviation, - A_surfxml_random_std_deviation); + surf_parse_get_double(&random_std_deviation, A_surfxml_random_std_deviation); random_generator = A_surfxml_random_generator; } static void add_randomness(void) { /* If needed aditional properties can be added by using the prop tag */ - random_data_t random = - random_new(random_generator, 0, random_min, random_max, random_mean, - random_std_deviation); - xbt_dict_set(random_data_list, random_id, (void *) random, NULL); + random_data_t random = random_new(random_generator, 0, random_min, random_max, random_mean, random_std_deviation); + xbt_dict_set(random_data_list, random_id, (void *) random, &xbt_free_ref); // FIX BY DAVID, add the xbt_free_ref function } /** @@ -1291,61 +569,20 @@ void surf_wsL07_link_create_resource(char *name, state_initial,state_trace,policy,properties); } - -/** - * Route: add route element bypassing the parser : - * same job as parse_route_elem - */ - -void surf_add_route_element(char* link_ctn_id) -{ - char *val; - val = xbt_strdup(link_ctn_id); - xbt_dynar_push(route_link_list,&val); -} -/** - * set route - */ -void surf_route_set_resource(char *source_id,char *destination_id,xbt_dynar_t links_id,int action) -{ - route_link_list = xbt_dynar_new(sizeof(char *), NULL); - //routing_add_route(source_id,destination_id,links_id,action); // COMMENTED BY DAVID - -} - -/** - * add host to routing host list - */ -void surf_route_add_host(char *host_id) -{ - //routing_add_host(host_id); // COMMENTED BY DAVID -} - /* * Add Traces */ void surf_add_host_traces(void) { - return surf_cpu_model->extension.cpu. - add_traces(); + return surf_cpu_model->extension.cpu.add_traces(); } void surf_add_link_traces(void) { - return surf_network_model->extension.network. - add_traces(); + return surf_network_model->extension.network.add_traces(); } void surf_wsL07_add_traces(void) { - return surf_workstation_model->extension.workstation. - add_traces(); -} -/** - * set routes - */ -void surf_set_routes(void) -{ - //routing_set_routes(); // COMMENTED BY DAVID + return surf_workstation_model->extension.workstation.add_traces(); } - -- 2.20.1