X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/731c4a5371dc691c8eb833f7d4617c7a94f91680..25dd0abaeebc08a4441684ff533c1668bd7e976d:/src/smpi/smpi_base.cpp diff --git a/src/smpi/smpi_base.cpp b/src/smpi/smpi_base.cpp index ddaffbc077..1a987ed230 100644 --- a/src/smpi/smpi_base.cpp +++ b/src/smpi/smpi_base.cpp @@ -62,12 +62,14 @@ static int match_send(void* a, void* b,smx_synchro_t ignored) { } -typedef struct s_smpi_factor *smpi_factor_t; -typedef struct s_smpi_factor { +// Methods used to parse and store the values for timing injections in smpi +// These are taken from surf/network.c and generalized to have more values for each factor +typedef struct s_smpi_factor_multival *smpi_os_factor_multival_t; +typedef struct s_smpi_factor_multival { // FIXME: this should be merged (deduplicated) with s_smpi_factor defined in network_smpi.c long factor; int nb_values; double values[4];//arbitrary set to 4 -} s_smpi_factor_t; +} s_smpi_factor_multival_t; xbt_dynar_t smpi_os_values = NULL; xbt_dynar_t smpi_or_values = NULL; xbt_dynar_t smpi_ois_values = NULL; @@ -76,15 +78,10 @@ double smpi_wtime_sleep = 0.0; double smpi_iprobe_sleep = 1e-4; double smpi_test_sleep = 1e-4; - -// Methods used to parse and store the values for timing injections in smpi -// These are taken from surf/network.c and generalized to have more factors -// These methods should be merged with those in surf/network.c (moved somewhere in xbt ?) - static int factor_cmp(const void *pa, const void *pb) { - return (((s_smpi_factor_t*)pa)->factor > ((s_smpi_factor_t*)pb)->factor) ? 1 : - (((s_smpi_factor_t*)pa)->factor < ((s_smpi_factor_t*)pb)->factor) ? -1 : 0; + return (((s_smpi_factor_multival_t*)pa)->factor > ((s_smpi_factor_multival_t*)pb)->factor) ? 1 : + (((s_smpi_factor_multival_t*)pa)->factor < ((s_smpi_factor_multival_t*)pb)->factor) ? -1 : 0; } @@ -92,28 +89,32 @@ static xbt_dynar_t parse_factor(const char *smpi_coef_string) { char *value = NULL; unsigned int iter = 0; - s_smpi_factor_t fact; + s_smpi_factor_multival_t fact; fact.nb_values=0; unsigned int i=0; xbt_dynar_t smpi_factor, radical_elements, radical_elements2 = NULL; - smpi_factor = xbt_dynar_new(sizeof(s_smpi_factor_t), NULL); + smpi_factor = xbt_dynar_new(sizeof(s_smpi_factor_multival_t), NULL); radical_elements = xbt_str_split(smpi_coef_string, ";"); xbt_dynar_foreach(radical_elements, iter, value) { - memset(&fact, 0, sizeof(s_smpi_factor_t)); + memset(&fact, 0, sizeof(s_smpi_factor_multival_t)); radical_elements2 = xbt_str_split(value, ":"); if (xbt_dynar_length(radical_elements2) <2 || xbt_dynar_length(radical_elements2) > 5) - xbt_die("Malformed radical for smpi factor!"); + xbt_die("Malformed radical for smpi factor: '%s'", smpi_coef_string); for(i =0; i