X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/4a6b0a991a67e6f2f67c03fed43529e078da7115..a0abec2d42ab8ef0900c7c0f1f4c99ae02bfbcb6:/src/smpi/instr_smpi.cpp diff --git a/src/smpi/instr_smpi.cpp b/src/smpi/instr_smpi.cpp index 9c8448d323..e69f0ded3a 100644 --- a/src/smpi/instr_smpi.cpp +++ b/src/smpi/instr_smpi.cpp @@ -71,19 +71,22 @@ static const char *instr_find_color (const char *state) { char *target = str_tolower (state); const char *ret = NULL; - const char *current; unsigned int i = 0; - while ((current = smpi_colors[i])){ - if (strcmp (state, current) == 0){ ret = smpi_colors[i+1]; break; } //exact match - if (strstr(target, current)) { ret = smpi_colors[i+1]; break; }; //as substring + const char *current = smpi_colors[i]; + while ((current != NULL)){ + if (strcmp (state, current) == 0 //exact match + || strstr(target, current) ){//as substring + ret = smpi_colors[i+1]; + break; + } i+=2; + current = smpi_colors[i]; } - free (target); + xbt_free(target); return ret; } - -static char *smpi_container(int rank, char *container, int n) +XBT_PRIVATE char *smpi_container(int rank, char *container, int n) { snprintf(container, n, "rank-%d", rank); return container; @@ -91,7 +94,6 @@ static char *smpi_container(int rank, char *container, int n) static char *TRACE_smpi_get_key(int src, int dst, char *key, int n); - static char *TRACE_smpi_put_key(int src, int dst, char *key, int n) { //get the dynar for src#dst @@ -99,8 +101,7 @@ static char *TRACE_smpi_put_key(int src, int dst, char *key, int n) snprintf(aux, INSTR_DEFAULT_STR_SIZE, "%d#%d", src, dst); xbt_dynar_t d = static_cast(xbt_dict_get_or_null(keys, aux)); - - if(!xbt_dynar_is_empty(d)){ + if(xbt_dynar_is_empty(d) == 0){ //receive was already pushed, perform a get instead TRACE_smpi_get_key(src , dst, key ,n); return key; @@ -113,11 +114,11 @@ static char *TRACE_smpi_put_key(int src, int dst, char *key, int n) //generate the key static unsigned long long counter = 0; - - snprintf(key, n, "%d_%d_%llu", src, dst, counter++); + counter++; + snprintf(key, n, "%d_%d_%llu", src, dst, counter); //push it - char *a = (char*)xbt_strdup(key); + char *a = static_cast (xbt_strdup(key)); xbt_dynar_push_as(d, char *, a); return key; @@ -129,9 +130,6 @@ static char *TRACE_smpi_get_key(int src, int dst, char *key, int n) snprintf(aux, INSTR_DEFAULT_STR_SIZE, "%d#%d", src, dst); xbt_dynar_t d = static_cast(xbt_dict_get_or_null(keys, aux)); - // xbt_assert(!xbt_dynar_is_empty(d), - // "Trying to get a link key (for message reception) that has no corresponding send (%s).", __FUNCTION__); - // sometimes the receive may be posted before the send if(xbt_dynar_is_empty(d)){ TRACE_smpi_put_key(src, dst, key, n); @@ -236,7 +234,6 @@ void TRACE_smpi_collective_in(int rank, int root, const char *operation, instr_e new_pajePushStateWithExtra (SIMIX_get_clock(), container, type, value, (void*)extra); } - void TRACE_smpi_collective_out(int rank, int root, const char *operation) { if (!TRACE_smpi_is_enabled()) return; @@ -333,7 +330,6 @@ void TRACE_smpi_sleeping_out(int rank) new_pajePopState (SIMIX_get_clock(), container, type); } - void TRACE_smpi_testing_in(int rank, instr_extra_data extra) { //do not forget to set the color first, otherwise this will explode