- char *value = NULL;
- unsigned int iter;
- smpi_factor_t fact;
-
- if(!smpi_lat_factor){
- xbt_dynar_t radical_elements,radical_elements2;
-
- char *smpi_coef_string = xbt_cfg_get_string(_surf_cfg_set,"smpi/lat_factor");
- smpi_lat_factor = xbt_dynar_new(sizeof(s_smpi_factor_t),free);
- radical_elements = xbt_str_split(smpi_coef_string, ";");
- xbt_dynar_foreach(radical_elements, iter, value) {
-
- radical_elements2 = xbt_str_split(value, ":");
- if(xbt_dynar_length(radical_elements2) != 2)
- xbt_die("Malformed radical for smpi/lat_factor!");
- fact = xbt_new(s_smpi_factor_t,1);
- fact->factor = atol(xbt_dynar_get_as(radical_elements2,0,char*));
- fact->value = atof(xbt_dynar_get_as(radical_elements2,1,char*));
- xbt_dynar_push_as(smpi_lat_factor,smpi_factor_t,fact);
- XBT_DEBUG("smpi_latency_factor:\t%ld : %f",fact->factor,fact->value);
- xbt_dynar_free(&radical_elements2);
- }
- xbt_dynar_free(&radical_elements);
- }
-
- xbt_dynar_foreach(smpi_lat_factor, iter, fact) {
- if(size >= fact->factor)
- {
- XBT_DEBUG("%lf >= %ld return %f",size,fact->factor,fact->value);
- return fact->value;
- }
- }
+ if (!smpi_lat_factor)
+ smpi_lat_factor =
+ parse_factor(xbt_cfg_get_string(_surf_cfg_set, "smpi/lat_factor"));
+
+ unsigned int iter = 0;
+ s_smpi_factor_t fact;
+ xbt_dynar_foreach(smpi_lat_factor, iter, fact) {
+ if (size >= fact.factor) {
+ XBT_DEBUG("%lf >= %ld return %f", size, fact.factor, fact.value);
+ return fact.value;
+ }
+ }