From 8dcab2e3c296d3bf6ec701ccba85b45856c67e7e Mon Sep 17 00:00:00 2001 From: navarrop Date: Tue, 28 Sep 2010 08:52:55 +0000 Subject: [PATCH] more clean code git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@8249 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- include/surf/surfxml_parse.h | 32 ++----- src/include/surf/surf.h | 56 +++++------- src/surf/simgrid.dtd | 3 - src/surf/surf.c | 6 +- src/surf/surf_private.h | 8 +- src/surf/surfxml_parse.c | 163 +++++++++++++++++------------------ 6 files changed, 113 insertions(+), 155 deletions(-) diff --git a/include/surf/surfxml_parse.h b/include/surf/surfxml_parse.h index 46585fe8e2..562201c0d3 100644 --- a/include/surf/surfxml_parse.h +++ b/include/surf/surfxml_parse.h @@ -55,36 +55,22 @@ XBT_PUBLIC(void) surf_parse_get_double(double *value, const char *string); XBT_PUBLIC(void) surf_parse_get_int(int *value, const char *string); /* Prototypes of the functions offered by flex */ -XBT_PUBLIC(int) surf_parse_lex(void); -XBT_PUBLIC(int) surf_parse_get_lineno(void); +XBT_PUBLIC(int) surf_parse_lex(void); +XBT_PUBLIC(int) surf_parse_get_lineno(void); XBT_PUBLIC(FILE *) surf_parse_get_in(void); XBT_PUBLIC(FILE *) surf_parse_get_out(void); -XBT_PUBLIC(int) surf_parse_get_leng(void); +XBT_PUBLIC(int) surf_parse_get_leng(void); XBT_PUBLIC(char *) surf_parse_get_text(void); -XBT_PUBLIC(void) surf_parse_set_lineno(int line_number); -XBT_PUBLIC(void) surf_parse_set_in(FILE * in_str); -XBT_PUBLIC(void) surf_parse_set_out(FILE * out_str); -XBT_PUBLIC(int) surf_parse_get_debug(void); -XBT_PUBLIC(void) surf_parse_set_debug(int bdebug); -XBT_PUBLIC(int) surf_parse_lex_destroy(void); +XBT_PUBLIC(void) surf_parse_set_lineno(int line_number); +XBT_PUBLIC(void) surf_parse_set_in(FILE * in_str); +XBT_PUBLIC(void) surf_parse_set_out(FILE * out_str); +XBT_PUBLIC(int) surf_parse_get_debug(void); +XBT_PUBLIC(void) surf_parse_set_debug(int bdebug); +XBT_PUBLIC(int) surf_parse_lex_destroy(void); /* What is needed to bypass the parser. */ XBT_PUBLIC_DATA(int_f_void_t) surf_parse; /* Entry-point to the parser. Set this to your function. */ -/* Set of macros to make the bypassing work easier. - * See examples/msg/masterslave_bypass.c for an example of use */ -#define SURFXML_BUFFER_SET(key,val) do { \ - AX_surfxml_##key=AX_ptr; \ - strcpy(A_surfxml_##key,val); \ - AX_ptr+=(int)strlen(val)+1; } while(0) - -#define SURFXML_BUFFER_RESET() do { \ - AX_ptr = 0; \ - memset(surfxml_bufferstack,0,surfxml_bufferstack_size); } while(0) - -#define SURFXML_START_TAG(tag) STag_surfxml_##tag() -#define SURFXML_END_TAG(tag) do { ETag_surfxml_##tag(); SURFXML_BUFFER_RESET(); } while(0) - XBT_PUBLIC(void) surfxml_add_callback(xbt_dynar_t cb_list, void_f_void_t function); XBT_PUBLIC(void) surfxml_del_callback(xbt_dynar_t* cb_list, void_f_void_t function); diff --git a/src/include/surf/surf.h b/src/include/surf/surf.h index 544870473f..d1d9964b4e 100644 --- a/src/include/surf/surf.h +++ b/src/include/surf/surf.h @@ -227,21 +227,21 @@ XBT_PUBLIC_DATA(routing_global_t) global_routing; // ADDED BY DAVID int (*link_shared) (const void *link); xbt_dict_t(*get_properties) (const void *resource); void (*link_create_resource) (char *name, - double bw_initial, - tmgr_trace_t bw_trace, - double lat_initial, - tmgr_trace_t lat_trace, - e_surf_resource_state_t - state_initial, - tmgr_trace_t state_trace, - e_surf_link_sharing_policy_t - policy, xbt_dict_t properties); + double bw_initial, + tmgr_trace_t bw_trace, + double lat_initial, + tmgr_trace_t lat_trace, + e_surf_resource_state_t + state_initial, + tmgr_trace_t state_trace, + e_surf_link_sharing_policy_t + policy, xbt_dict_t properties); void (*cpu_create_resource) (char *name, double power_peak, - double power_scale, - tmgr_trace_t power_trace, - e_surf_resource_state_t state_initial, - tmgr_trace_t state_trace, - xbt_dict_t cpu_properties); + double power_scale, + tmgr_trace_t power_trace, + e_surf_resource_state_t state_initial, + tmgr_trace_t state_trace, + xbt_dict_t cpu_properties); void (*add_traces) (void); } s_surf_model_extension_workstation_t; @@ -663,16 +663,6 @@ 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; - -/* 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; - - /* For the trace and trace:connect tag (store their content till the end of the parsing) */ XBT_PUBLIC_DATA(xbt_dict_t) traces_set_list; XBT_PUBLIC_DATA(xbt_dict_t) trace_connect_list_host_avail; @@ -722,15 +712,15 @@ XBT_PUBLIC(void) surf_link_create_resource(char *name, XBT_PUBLIC(void) surf_wsL07_link_create_resource(char *name, - double bw_initial, - tmgr_trace_t bw_trace, - double lat_initial, - tmgr_trace_t lat_trace, - e_surf_resource_state_t - state_initial, - tmgr_trace_t state_trace, - e_surf_link_sharing_policy_t - policy, xbt_dict_t properties); + double bw_initial, + tmgr_trace_t bw_trace, + double lat_initial, + tmgr_trace_t lat_trace, + e_surf_resource_state_t + state_initial, + tmgr_trace_t state_trace, + e_surf_link_sharing_policy_t + policy, xbt_dict_t properties); /** * add route element (link_ctn) bypassing the parser * diff --git a/src/surf/simgrid.dtd b/src/surf/simgrid.dtd index bf0a712393..7d818f98c4 100644 --- a/src/surf/simgrid.dtd +++ b/src/surf/simgrid.dtd @@ -5,9 +5,6 @@ - - - diff --git a/src/surf/surf.c b/src/surf/surf.c index 8cc98da906..82ca9d0a86 100644 --- a/src/surf/surf.c +++ b/src/surf/surf.c @@ -112,8 +112,8 @@ xbt_dynar_t surf_path = NULL; /* Don't forget to update the option description in smx_config when you change this */ s_surf_model_description_t surf_network_model_description[] = { - {"Constant", "Simplistic network model where all communication take a constant time (one second)", NULL, surf_network_model_init_Constant}, - {"Vivaldi", "Scalable network model using the Vivaldi coordinate ideas", NULL, surf_network_model_init_Vivaldi}, + {"Constant", "Simplistic network model where all communication take a constant time (one second)", NULL, surf_network_model_init_Constant}, + {"Vivaldi", "Scalable network model using the Vivaldi coordinate ideas", NULL, surf_network_model_init_Vivaldi}, {"CM02", "Realistic network model with lmm_solve and no correction factors", NULL, surf_network_model_init_CM02}, {"LV08", "Realistic network model with lmm_solve and these correction factors: latency*=10.4, bandwidth*=.92, S=8775" , NULL, surf_network_model_init_LegrandVelho}, {"SMPI", "Realistic network model with lmm_solve and correction factors on three intervals (< 1KiB, < 64 KiB, >= 64 KiB)", NULL, surf_network_model_init_SMPI}, @@ -233,7 +233,6 @@ double generic_maxmin_share_resources(xbt_swag_t running_actions, return min; } - XBT_LOG_EXTERNAL_CATEGORY(surf_cpu); XBT_LOG_EXTERNAL_CATEGORY(surf_kernel); XBT_LOG_EXTERNAL_CATEGORY(surf_lagrange); @@ -247,7 +246,6 @@ XBT_LOG_EXTERNAL_CATEGORY(surf_workstation); XBT_LOG_EXTERNAL_CATEGORY(surf_config); XBT_LOG_EXTERNAL_CATEGORY(surf_route); - #ifdef HAVE_GTNETS XBT_LOG_EXTERNAL_CATEGORY(surf_network_gtnets); #endif diff --git a/src/surf/surf_private.h b/src/surf/surf_private.h index 002c56bf49..3df9e29f11 100644 --- a/src/surf/surf_private.h +++ b/src/surf/surf_private.h @@ -64,12 +64,10 @@ void surf_config_init(int *argc, char **argv); void surf_config_finalize(void); void surf_config(const char *name, va_list pa); - void net_action_recycle(surf_action_t action); double net_action_get_remains(surf_action_t action); int net_get_link_latency(surf_action_t action); void net_action_set_max_duration(surf_action_t action, double duration); - /* * Returns the initial path. On Windows the initial path is * the current directory for the current process in the other @@ -93,8 +91,7 @@ typedef struct { void *link_ptr; }s_onelink, *s_onelink_t; - -/* +/** * Routing logic */ @@ -180,7 +177,7 @@ struct s_routing_global { XBT_PUBLIC(void) routing_model_create(size_t size_of_link,void *loopback); -/* +/** * Resource protected methods */ xbt_dict_t surf_resource_properties(const void *resource); @@ -189,5 +186,4 @@ XBT_PUBLIC(void) surfxml_bufferstack_push(int new); XBT_PUBLIC(void) surfxml_bufferstack_pop(int new); XBT_PUBLIC_DATA(int) surfxml_bufferstack_size; - #endif /* _SURF_SURF_PRIVATE_H */ diff --git a/src/surf/surfxml_parse.c b/src/surf/surfxml_parse.c index 7078600a63..8691238417 100644 --- a/src/surf/surfxml_parse.c +++ b/src/surf/surfxml_parse.c @@ -17,21 +17,13 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_parse, surf, #include "simgrid_dtd.c" /* Initialize the parsing globals */ -int route_action = 0; xbt_dict_t traces_set_list = NULL; -//xbt_dynar_t traces_connect_list = NULL; xbt_dict_t trace_connect_list_host_avail = NULL; xbt_dict_t trace_connect_list_power = NULL; xbt_dict_t trace_connect_list_link_avail = NULL; xbt_dict_t trace_connect_list_bandwidth = NULL; 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 void surf_parse_error(char *msg); - /* 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; @@ -64,20 +56,22 @@ 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; +/* store the current property set for any tag */ xbt_dict_t current_property_set = 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; +/* dictionary of random generator data */ +xbt_dict_t random_data_list = NULL; 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 surf_parse_error(char *msg); + static void parse_Stag_trace(void); static void parse_Etag_trace(void); static void parse_Stag_trace_c_connect(void); + static void init_randomness(void); static void add_randomness(void); @@ -150,28 +144,7 @@ void surf_parse_reset_parser(void) ETag_surfxml_bypassRoute_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); } -void STag_surfxml_include(void) -{ - xbt_dynar_push(surf_input_buffer_stack, &surf_input_buffer); - 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); - surf_input_buffer = surf_parse__create_buffer(surf_file_to_parse, 10); - surf_parse__switch_to_buffer(surf_input_buffer); - printf("STAG\n"); - fflush(NULL); -} - -void ETag_surfxml_include(void) -{ - printf("ETAG\n"); - fflush(NULL); - surf_parse__delete_buffer(surf_input_buffer); - fclose(surf_file_to_parse); - xbt_dynar_pop(surf_file_to_parse_stack, &surf_file_to_parse); - xbt_dynar_pop(surf_input_buffer_stack, &surf_input_buffer); -} +/* Stag and Etag parse functions */ void STag_surfxml_platform(void) { @@ -201,14 +174,11 @@ void STag_surfxml_platform(void) } -void ETag_surfxml_platform(void) -{ - surfxml_call_cb_functions(ETag_surfxml_platform_cb_list); - xbt_dict_free(&random_data_list); // FIXME: DUPLICATE -} - -#define parse_method(type,name) void type##Tag_surfxml_##name(void) { surfxml_call_cb_functions(type##Tag_surfxml_##name##_cb_list); } +#define parse_method(type,name) \ +void type##Tag_surfxml_##name(void) \ +{ surfxml_call_cb_functions(type##Tag_surfxml_##name##_cb_list); } + parse_method(E,platform); parse_method(S,host); parse_method(E,host); parse_method(S,router); parse_method(E,router); parse_method(S,link); parse_method(E,link); @@ -239,12 +209,6 @@ void surf_parse_open(const char *file) } surf_file_to_parse = surf_fopen(file, "r"); xbt_assert1((surf_file_to_parse), "Unable to open \"%s\"\n", file); - - if (!surf_input_buffer_stack) - surf_input_buffer_stack = xbt_dynar_new(sizeof(YY_BUFFER_STATE), NULL); - if (!surf_file_to_parse_stack) - surf_file_to_parse_stack = xbt_dynar_new(sizeof(FILE *), NULL); - surf_input_buffer = surf_parse__create_buffer(surf_file_to_parse, 10); surf_parse__switch_to_buffer(surf_input_buffer); surf_parse_lineno = 1; @@ -252,11 +216,6 @@ void surf_parse_open(const char *file) void surf_parse_close(void) { - if (surf_input_buffer_stack) - 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); @@ -327,18 +286,14 @@ static XBT_INLINE void surfxml_call_cb_functions(xbt_dynar_t cb_list) static void init_data(void) { - if (!surfxml_bufferstack_stack) - surfxml_bufferstack_stack = xbt_dynar_new(sizeof(char *), NULL); - + random_data_list = xbt_dict_new(); traces_set_list = xbt_dict_new(); - trace_connect_list_host_avail = xbt_dict_new(); trace_connect_list_power = xbt_dict_new(); trace_connect_list_link_avail = xbt_dict_new(); trace_connect_list_bandwidth = xbt_dict_new(); trace_connect_list_latency = xbt_dict_new(); - - random_data_list = xbt_dict_new(); + 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); @@ -349,15 +304,13 @@ static void init_data(void) static void free_data(void) { - xbt_dynar_free(&surfxml_bufferstack_stack); - - xbt_dict_free(&traces_set_list); xbt_dict_free(&trace_connect_list_host_avail); xbt_dict_free(&trace_connect_list_power); xbt_dict_free(&trace_connect_list_link_avail); xbt_dict_free(&trace_connect_list_bandwidth); xbt_dict_free(&trace_connect_list_latency); xbt_dict_free(&traces_set_list); + xbt_dict_free(&random_data_list); } /* Here start parse */ @@ -370,7 +323,6 @@ 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); // FIXME: DUPLICATE xbt_assert1(!parse_status, "Parse error in %s", file); } @@ -479,8 +431,7 @@ double get_cpu_power(const char *power) return power_scale; } -double random_min, random_max, random_mean, random_std_deviation, - random_generator; +double random_min, random_max, random_mean, random_std_deviation, random_generator; char *random_id; static void init_randomness(void) @@ -510,11 +461,11 @@ void surf_host_create_resource(char *name, double power_peak, tmgr_trace_t state_trace, xbt_dict_t cpu_properties) { - return surf_cpu_model->extension.cpu. - create_resource(name,power_peak,power_scale,power_trace,state_initial,state_trace,cpu_properties); + return surf_cpu_model->extension.cpu. + create_resource(name,power_peak,power_scale,power_trace,state_initial,state_trace,cpu_properties); } -/* +/** * create CPU resource via worsktation_ptask_L07 model */ @@ -528,7 +479,7 @@ void surf_wsL07_host_create_resource(char *name, double power_peak, surf_workstation_model->extension.workstation. cpu_create_resource(name,power_peak,power_scale,power_trace,state_initial,state_trace,cpu_properties); } -/* +/** * create link resource via network Model */ void surf_link_create_resource(char *name, @@ -542,33 +493,64 @@ void surf_link_create_resource(char *name, e_surf_link_sharing_policy_t policy, xbt_dict_t properties) { - return surf_network_model->extension.network. - create_resource(name,bw_initial,bw_trace,lat_initial,lat_trace, - state_initial,state_trace,policy,properties); - + return surf_network_model->extension.network. + create_resource(name,bw_initial,bw_trace,lat_initial,lat_trace, + state_initial,state_trace,policy,properties); } -/* +/** * create link resource via workstation_ptask_L07 model */ void surf_wsL07_link_create_resource(char *name, - double bw_initial, - tmgr_trace_t bw_trace, - double lat_initial, - tmgr_trace_t lat_trace, - e_surf_resource_state_t - state_initial, - tmgr_trace_t state_trace, - e_surf_link_sharing_policy_t - policy, xbt_dict_t properties) -{ - return surf_workstation_model->extension.workstation. - link_create_resource(name,bw_initial,bw_trace,lat_initial,lat_trace, + double bw_initial, + tmgr_trace_t bw_trace, + double lat_initial, + tmgr_trace_t lat_trace, + e_surf_resource_state_t + state_initial, + tmgr_trace_t state_trace, + e_surf_link_sharing_policy_t + policy, xbt_dict_t properties) +{ + return surf_workstation_model->extension.workstation. + link_create_resource(name,bw_initial,bw_trace,lat_initial,lat_trace, 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) +{ + xbt_die("\"surf_add_route_element\" not support"); +// 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) +{ + xbt_die("\"surf_route_set_resource\" not support"); + //route_link_list = xbt_dynar_new(sizeof(char *), NULL); // COMMENTED BY DAVID + //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) +{ + xbt_die("\"surf_route_add_host\" not support"); + //routing_add_host(host_id); // COMMENTED BY DAVID +} + +/** * Add Traces */ void surf_add_host_traces(void) @@ -585,3 +567,12 @@ void surf_wsL07_add_traces(void) { return surf_workstation_model->extension.workstation.add_traces(); } + +/** + * set routes + */ +void surf_set_routes(void) +{ + xbt_die("\"surf_set_routes\" not support"); + //routing_set_routes(); // COMMENTED BY DAVID +} \ No newline at end of file -- 2.20.1