Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
more clean code
authornavarrop <navarrop@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Tue, 28 Sep 2010 08:52:55 +0000 (08:52 +0000)
committernavarrop <navarrop@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Tue, 28 Sep 2010 08:52:55 +0000 (08:52 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@8249 48e7efb5-ca39-0410-a469-dd3cf9ba447f

include/surf/surfxml_parse.h
src/include/surf/surf.h
src/surf/simgrid.dtd
src/surf/surf.c
src/surf/surf_private.h
src/surf/surfxml_parse.c

index 46585fe..562201c 100644 (file)
@@ -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);
 
index 5448704..d1d9964 100644 (file)
@@ -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
  *
index bf0a712..7d818f9 100644 (file)
@@ -5,9 +5,6 @@
 <!ATTLIST platform xmlns:link CDATA "http://simgrid.gforge.inria.fr/">
 <!ATTLIST platform xmlns:route CDATA "http://simgrid.gforge.inria.fr/">
 
-<!ELEMENT include EMPTY>
-<!ATTLIST include file CDATA #REQUIRED>
-
 <!ELEMENT trace (#PCDATA)>
 <!ATTLIST trace id CDATA #REQUIRED>
 <!ATTLIST trace file CDATA "">
index 8cc98da..82ca9d0 100644 (file)
@@ -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
index 002c56b..3df9e29 100644 (file)
@@ -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 */
index 7078600..8691238 100644 (file)
@@ -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