X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ff1eebe3071b50372f9bf3048eeec04c610d2788..702ac78afa738128143f0b2a03bad8484001407c:/src/surf/surfxml_parse.c diff --git a/src/surf/surfxml_parse.c b/src/surf/surfxml_parse.c index 53db2901e8..a15bd377cf 100644 --- a/src/surf/surfxml_parse.c +++ b/src/surf/surfxml_parse.c @@ -76,6 +76,8 @@ xbt_dynar_t STag_surfxml_prop_cb_list = NULL; xbt_dynar_t ETag_surfxml_prop_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_peer_cb_list = NULL; +xbt_dynar_t ETag_surfxml_peer_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_connect_cb_list = NULL; @@ -88,6 +90,8 @@ 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_dynar_t STag_surfxml_config_cb_list = NULL; +xbt_dynar_t ETag_surfxml_config_cb_list = NULL; /* store the current property set for any tag */ xbt_dict_t current_property_set = NULL; @@ -108,6 +112,115 @@ static void parse_Stag_trace_connect(void); static void init_randomness(void); static void add_randomness(void); +/* + * This function return 0 or 1 if callbacks are empty or not. + */ +int surf_parse_no_callbacks(void) +{ + return xbt_dynar_is_empty(STag_surfxml_platform_cb_list) && + xbt_dynar_is_empty(ETag_surfxml_platform_cb_list) && + xbt_dynar_is_empty(STag_surfxml_host_cb_list) && + xbt_dynar_is_empty(ETag_surfxml_host_cb_list) && + xbt_dynar_is_empty(STag_surfxml_router_cb_list) && + xbt_dynar_is_empty(ETag_surfxml_router_cb_list) && + xbt_dynar_is_empty(STag_surfxml_link_cb_list) && + xbt_dynar_is_empty(ETag_surfxml_link_cb_list) && + xbt_dynar_is_empty(STag_surfxml_route_cb_list) && + xbt_dynar_is_empty(ETag_surfxml_route_cb_list) && + xbt_dynar_is_empty(STag_surfxml_link_ctn_cb_list) && + xbt_dynar_is_empty(ETag_surfxml_link_ctn_cb_list) && + xbt_dynar_is_empty(STag_surfxml_process_cb_list) && + xbt_dynar_is_empty(ETag_surfxml_process_cb_list) && + xbt_dynar_is_empty(STag_surfxml_argument_cb_list) && + xbt_dynar_is_empty(ETag_surfxml_argument_cb_list) && + xbt_dynar_is_empty(STag_surfxml_prop_cb_list) && + xbt_dynar_is_empty(ETag_surfxml_prop_cb_list) && + xbt_dynar_is_empty(STag_surfxml_trace_cb_list) && + xbt_dynar_is_empty(ETag_surfxml_trace_cb_list) && + xbt_dynar_is_empty(STag_surfxml_trace_connect_cb_list) && + xbt_dynar_is_empty(ETag_surfxml_trace_connect_cb_list) && + xbt_dynar_is_empty(STag_surfxml_random_cb_list) && + xbt_dynar_is_empty(ETag_surfxml_random_cb_list) && + xbt_dynar_is_empty(STag_surfxml_AS_cb_list) && + xbt_dynar_is_empty(ETag_surfxml_AS_cb_list) && + xbt_dynar_is_empty(STag_surfxml_ASroute_cb_list) && + xbt_dynar_is_empty(ETag_surfxml_ASroute_cb_list) && + xbt_dynar_is_empty(STag_surfxml_bypassRoute_cb_list) && + xbt_dynar_is_empty(ETag_surfxml_bypassRoute_cb_list) && + xbt_dynar_is_empty(STag_surfxml_cluster_cb_list) && + xbt_dynar_is_empty(ETag_surfxml_cluster_cb_list) && + xbt_dynar_is_empty(STag_surfxml_peer_cb_list) && + xbt_dynar_is_empty(ETag_surfxml_peer_cb_list) && + xbt_dynar_is_empty(STag_surfxml_config_cb_list) && + xbt_dynar_is_empty(ETag_surfxml_config_cb_list); +} + +void surf_parse_init_callbacks(void) +{ + STag_surfxml_platform_cb_list = + xbt_dynar_new(sizeof(void_f_void_t), NULL); + ETag_surfxml_platform_cb_list = + xbt_dynar_new(sizeof(void_f_void_t), NULL); + STag_surfxml_host_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); + ETag_surfxml_host_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); + STag_surfxml_router_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); + ETag_surfxml_router_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); + 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_ctn_cb_list = + xbt_dynar_new(sizeof(void_f_void_t), NULL); + ETag_surfxml_link_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_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_connect_cb_list = + xbt_dynar_new(sizeof(void_f_void_t), NULL); + ETag_surfxml_trace_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); + 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); + 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_peer_cb_list = + xbt_dynar_new(sizeof(void_f_void_t), NULL); + ETag_surfxml_peer_cb_list = + xbt_dynar_new(sizeof(void_f_void_t), NULL); + STag_surfxml_config_cb_list = + xbt_dynar_new(sizeof(void_f_void_t), NULL); + ETag_surfxml_config_cb_list = + xbt_dynar_new(sizeof(void_f_void_t), NULL); +} + +void surf_parse_reset_callbacks(void) +{ + surf_parse_free_callbacks(); + surf_parse_init_callbacks(); +} + void surf_parse_free_callbacks(void) { xbt_dynar_free(&STag_surfxml_platform_cb_list); @@ -142,43 +255,10 @@ void surf_parse_free_callbacks(void) xbt_dynar_free(&ETag_surfxml_bypassRoute_cb_list); xbt_dynar_free(&STag_surfxml_cluster_cb_list); xbt_dynar_free(&ETag_surfxml_cluster_cb_list); -} - -void surf_parse_reset_parser(void) -{ - surf_parse_free_callbacks(); - STag_surfxml_platform_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); - ETag_surfxml_platform_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); - STag_surfxml_host_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); - ETag_surfxml_host_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); - STag_surfxml_router_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); - ETag_surfxml_router_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); - 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_ctn_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); - ETag_surfxml_link_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_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_connect_cb_list = xbt_dynar_new(sizeof(void_f_void_t), NULL); - ETag_surfxml_trace_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); - 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); - 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); + xbt_dynar_free(&STag_surfxml_peer_cb_list); + xbt_dynar_free(&ETag_surfxml_peer_cb_list); + xbt_dynar_free(&STag_surfxml_config_cb_list); + xbt_dynar_free(&ETag_surfxml_config_cb_list); } /* Stag and Etag parse functions */ @@ -190,22 +270,24 @@ void STag_surfxml_platform(void) sscanf(A_surfxml_platform_version, "%lg", &version); xbt_assert0((version >= 1.0), "******* BIG FAT WARNING *********\n " - "You're using an ancient XML file. " - "Since SimGrid 3.1, units are Bytes, Flops, and seconds " - "instead of MBytes, MFlops and seconds. " - "A script (surfxml_update.pl) to help you convert your old " - "platform files " - "is available in the contrib/platform_generation directory " - "of the simgrid repository. Please check also out the " - "SURF section of the ChangeLog for the 3.1 version. " - "Last, do not forget to also update your values for " - "the calls to MSG_task_create (if any)."); - xbt_assert0((version >= 2.0), "******* BIG FAT WARNING *********\n " - "You're using an old XML file. " - "A script (surfxml_update.pl) to help you convert your old " - "platform files " - "is available in the contrib/platform_generation directory " - "of the simgrid repository."); + "You're using an ancient XML file.\n" + "Since SimGrid 3.1, units are Bytes, Flops, and seconds " + "instead of MBytes, MFlops and seconds.\n" + + "Use simgrid_update_xml to update your file automatically. " + "This program is installed automatically with SimGrid, or " + "available in the tools/ directory of the source archive.\n" + + "Please check also out the SURF section of the ChangeLog for " + "the 3.1 version for more information. \n" + + "Last, do not forget to also update your values for " + "the calls to MSG_task_create (if any)."); + xbt_assert0((version >= 3.0), "******* BIG FAT WARNING *********\n " + "You're using an old XML file.\n" + "Use simgrid_update_xml to update your file automatically. " + "This program is installed automatically with SimGrid, or " + "available in the tools/ directory of the source archive."); surfxml_call_cb_functions(STag_surfxml_platform_cb_list); @@ -215,22 +297,41 @@ void STag_surfxml_platform(void) 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); -parse_method(S,route); parse_method(E,route); -parse_method(S,link_ctn); parse_method(E,link_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_connect); parse_method(E,trace_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); -parse_method(S,cluster); parse_method(E,cluster); +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); +parse_method(S, route); +parse_method(E, route); +parse_method(S, link_ctn); +parse_method(E, link_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_connect); +parse_method(E, trace_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); +parse_method(S, cluster); +parse_method(E, cluster); +parse_method(S, peer); +parse_method(E, peer); +parse_method(S, config); +parse_method(E, config); /* Open and Close parse file */ @@ -239,8 +340,8 @@ void surf_parse_open(const char *file) static int warned = 0; /* warn only once */ if (!file) { if (!warned) { - WARN0 - ("Bypassing the XML parser since surf_parse_open received a NULL pointer. If it is not what you want, go fix your code."); + XBT_WARN + ("Bypassing the XML parser since surf_parse_open received a NULL pointer. If it is not what you want, go fix your code."); warned = 1; } return; @@ -257,6 +358,7 @@ void surf_parse_close(void) if (surf_file_to_parse) { surf_parse__delete_buffer(surf_input_buffer); fclose(surf_file_to_parse); + surf_file_to_parse = NULL; //Must be reset for Bypass } } @@ -298,17 +400,23 @@ 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) +void surfxml_del_callback(xbt_dynar_t 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_ex_t e; + unsigned int it=0; + void_f_void_t null_f=NULL; + + TRY { + it = xbt_dynar_search(cb_list,&function); + } CATCH(e) { + if (e.category == not_found_error) { + xbt_ex_free(e); + xbt_die("Trying to remove a callback that is not here! This should not happen"); + } + RETHROW; } - xbt_dynar_free(p_cb_list); - *p_cb_list = new_cb_list; + + xbt_dynar_replace(cb_list, it,&null_f); } static XBT_INLINE void surfxml_call_cb_functions(xbt_dynar_t cb_list) @@ -316,7 +424,7 @@ static XBT_INLINE void surfxml_call_cb_functions(xbt_dynar_t cb_list) unsigned int iterator; void_f_void_t fun; xbt_dynar_foreach(cb_list, iterator, fun) { - (*fun) (); + if (fun) (*fun) (); } } @@ -327,20 +435,17 @@ 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(); - - 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_connect_cb_list, &parse_Stag_trace_connect); + surfxml_add_callback(STag_surfxml_trace_connect_cb_list, + &parse_Stag_trace_connect); } static void free_data(void) @@ -356,7 +461,6 @@ static void free_data(void) } /* Here start parse */ - void parse_platform_file(const char *file) { int parse_status; @@ -378,21 +482,33 @@ void parse_properties(void) { 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); + current_property_set = xbt_dict_new(); // Maybe, it should be make a error + if(!strcmp(A_surfxml_prop_id,"coordinates")){ + if(!strcmp(A_surfxml_prop_value,"yes") && !COORD_HOST_LEVEL) + { + XBT_INFO("Configuration change: Set '%s' to '%s'", A_surfxml_prop_id, A_surfxml_prop_value); + COORD_HOST_LEVEL = xbt_lib_add_level(host_lib,xbt_dynar_free_voidp); + COORD_ASR_LEVEL = xbt_lib_add_level(as_router_lib,xbt_dynar_free_voidp); + } + if(strcmp(A_surfxml_prop_value,"yes")) + xbt_die("Setting XML prop coordinates must be \"yes\""); + } + else{ + value = xbt_strdup(A_surfxml_prop_value); + xbt_dict_set(current_property_set, A_surfxml_prop_id, value, free); + } } /* Trace management functions */ static double trace_periodicity = -1.0; static char *trace_file = NULL; -static char *trace_id; +static char *trace_id = NULL; static void parse_Stag_trace(void) { - trace_id = strdup(A_surfxml_trace_id); - trace_file = strdup(A_surfxml_trace_file); + trace_id = xbt_strdup(A_surfxml_trace_id); + trace_file = xbt_strdup(A_surfxml_trace_file); surf_parse_get_double(&trace_periodicity, A_surfxml_trace_periodicity); } @@ -406,10 +522,14 @@ static void parse_Etag_trace(void) trace = NULL; else trace = - tmgr_trace_new_from_string(trace_id, surfxml_pcdata, - trace_periodicity); + tmgr_trace_new_from_string(trace_id, surfxml_pcdata, + trace_periodicity); } xbt_dict_set(traces_set_list, trace_id, (void *) trace, NULL); + xbt_free(trace_file); + trace_file = NULL; + xbt_free(trace_id); + trace_id = NULL; } static void parse_Stag_trace_connect(void) @@ -445,9 +565,8 @@ static void parse_Stag_trace_connect(void) xbt_strdup(A_surfxml_trace_connect_element), free); break; default: - xbt_die(bprintf("Cannot connect trace %s to %s: kind of trace unknown", - A_surfxml_trace_connect_trace, - A_surfxml_trace_connect_element)); + xbt_die("Cannot connect trace %s to %s: kind of trace unknown", + A_surfxml_trace_connect_trace, A_surfxml_trace_connect_element); } } @@ -466,9 +585,8 @@ double get_cpu_power(const char *power) generator = xbt_malloc(q - (p + 6) + 1); memcpy(generator, p + 6, q - (p + 6)); generator[q - (p + 6)] = '\0'; - xbt_assert1((random = - xbt_dict_get_or_null(random_data_list, generator)), - "Random generator %s undefined", generator); + random = xbt_dict_get_or_null(random_data_list, generator); + xbt_assert1(random, "Random generator %s undefined", generator); power_scale = random_generate(random); } } else { @@ -477,7 +595,8 @@ 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) @@ -486,29 +605,38 @@ 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, &xbt_free_ref); + 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); } /** * create CPU resource via CPU Model */ void surf_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) + double power_scale, + tmgr_trace_t power_trace, int core, + e_surf_resource_state_t state_initial, + 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, + core, + state_initial, + state_trace, + cpu_properties); } /** @@ -516,32 +644,44 @@ void surf_host_create_resource(char *name, double power_peak, */ 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) + 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); + 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, - 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,bw_trace,lat_initial,lat_trace, - state_initial,state_trace,policy,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) +{ + return surf_network_model->extension.network.create_resource(name, + bw_initial, + bw_trace, + lat_initial, + lat_trace, + state_initial, + state_trace, + policy, + properties); } /** @@ -549,19 +689,20 @@ void surf_link_create_resource(char *name, */ 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); + 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); } /** @@ -569,39 +710,39 @@ void surf_wsL07_link_create_resource(char *name, *init new routing model component */ -void surf_AS_new(const char* AS_id, const char *AS_mode) +void surf_AS_new(const char *AS_id, const char *AS_mode) { - routing_AS_init(AS_id,AS_mode); + routing_AS_init(AS_id, AS_mode); } -void surf_AS_finalize(const char* AS_id) +void surf_AS_finalize(const char *AS_id) { - routing_AS_end(AS_id); + routing_AS_end(AS_id); } /* * add host to the network element list */ -void surf_route_add_host(const char* host_id) +void surf_route_add_host(const char *host_id) { - routing_add_host(host_id); + routing_add_host(host_id); } /** * set route */ -void surf_routing_add_route(const char *src_id,const char *dst_id,xbt_dynar_t links_id) -{ - unsigned int i; - const char * link_id; - routing_set_route(src_id,dst_id); - xbt_dynar_foreach(links_id,i,link_id) - { - routing_add_link(link_id); - } +void surf_routing_add_route(const char *src_id, const char *dst_id, + xbt_dynar_t links_id) +{ + unsigned int i; + const char *link_id; + routing_set_route(src_id, dst_id); + xbt_dynar_foreach(links_id, i, link_id) { + routing_add_link(link_id); + } - //store the route - routing_store_route(); + //store the route + routing_store_route(); } /** @@ -609,16 +750,15 @@ void surf_routing_add_route(const char *src_id,const char *dst_id,xbt_dynar_t li */ 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(); + return surf_workstation_model->extension.workstation.add_traces(); } -