X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a2a8fbb62b1993b24307c5228b281e3e50416e6c..5d938be0afd2015d43ba18c58d55517410f800d1:/src/surf/surfxml_parse.c diff --git a/src/surf/surfxml_parse.c b/src/surf/surfxml_parse.c index 0556aa711c..63f81e1f12 100644 --- a/src/surf/surfxml_parse.c +++ b/src/surf/surfxml_parse.c @@ -26,7 +26,7 @@ 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. Usefull for the foreach tag */ +/* 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; @@ -90,6 +90,12 @@ 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; @@ -160,6 +166,12 @@ void surf_parse_free_callbacks(void) 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 } void surf_parse_reset_parser(void) @@ -203,6 +215,12 @@ void surf_parse_reset_parser(void) 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 } void STag_surfxml_include(void) @@ -427,6 +445,36 @@ 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); +} + void surf_parse_open(const char *file) { static int warned = 0; /* warn only once */ @@ -512,6 +560,19 @@ void surfxml_add_callback(xbt_dynar_t cb_list, void_f_void_t function) xbt_dynar_push(cb_list, &function); } +void surfxml_del_callback(xbt_dynar_t* p_cb_list, void_f_void_t function) +{ + xbt_dynar_t new_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); + unsigned int it; + void_f_void_t func; + xbt_dynar_foreach(*p_cb_list,it,func) { + if( func != function ) + xbt_dynar_push(new_cb_list, &func); + } + xbt_dynar_free(p_cb_list); + *p_cb_list = new_cb_list; +} + static XBT_INLINE void surfxml_call_cb_functions(xbt_dynar_t cb_list) { unsigned int iterator; @@ -547,22 +608,18 @@ 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_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); } static void free_data(void) @@ -709,7 +766,6 @@ static void parse_host_foreach(void){ 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); @@ -1167,6 +1223,9 @@ static void add_randomness(void) xbt_dict_set(random_data_list, random_id, (void *) random, NULL); } +/** + * create CPU resource via CPU Model + */ void surf_host_create_resource(char *name, double power_peak, double power_scale, tmgr_trace_t power_trace, @@ -1178,16 +1237,61 @@ void surf_host_create_resource(char *name, double power_peak, create_resource(name,power_peak,power_scale,power_trace,state_initial,state_trace,cpu_properties); } +/* + * create CPU resource via worsktation_ptask_L07 model + */ -void surf_link_create_resouce(char *name, +void surf_wsL07_host_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) +{ + 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, double bw_initial, - double lat_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_network_model->extension.network. - create_resource(name,bw_initial,lat_initial); + 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, + state_initial,state_trace,policy,properties); } + /** * Route: add route element bypassing the parser : * same job as parse_route_elem @@ -1205,7 +1309,7 @@ void surf_add_route_element(char* link_ctn_id) 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); + //routing_add_route(source_id,destination_id,links_id,action); // COMMENTED BY DAVID } @@ -1214,7 +1318,7 @@ void surf_route_set_resource(char *source_id,char *destination_id,xbt_dynar_t li */ void surf_route_add_host(char *host_id) { - routing_add_host(host_id); + //routing_add_host(host_id); // COMMENTED BY DAVID } /* @@ -1231,10 +1335,17 @@ void surf_add_link_traces(void) 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(); + //routing_set_routes(); // COMMENTED BY DAVID } +