X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/c086caac4026d0bbd54508d51ce4738157d15238..70e4dad5ffd1ba6f56eb7bc97408411b9a73119b:/src/smpi/smpi_global.c diff --git a/src/smpi/smpi_global.c b/src/smpi/smpi_global.c index 0d069d0492..ef58d883c3 100644 --- a/src/smpi/smpi_global.c +++ b/src/smpi/smpi_global.c @@ -12,9 +12,12 @@ void *smpi_request_new() { smpi_mpi_request_t request = xbt_new(s_smpi_mpi_request_t, 1); + request->buf = NULL; request->completed = 0; request->mutex = SIMIX_mutex_init(); request->cond = SIMIX_cond_init(); + request->data = NULL; + request->forward = 0; return request; } @@ -26,11 +29,9 @@ void smpi_request_free(void *pointer) smpi_mpi_request_t request = pointer; - if (NULL != request) { - SIMIX_cond_destroy(request->cond); - SIMIX_mutex_destroy(request->mutex); - xbt_free(request); - } + SIMIX_cond_destroy(request->cond); + SIMIX_mutex_destroy(request->mutex); + xbt_free(request); return; } @@ -41,7 +42,10 @@ void smpi_request_reset(void *pointer) { smpi_mpi_request_t request = pointer; + request->buf = NULL; request->completed = 0; + request->data = NULL; + request->forward = 0; return; } @@ -51,17 +55,16 @@ void *smpi_message_new(void); void *smpi_message_new() { - return xbt_new(s_smpi_received_message_t, 1); + smpi_received_message_t message = xbt_new(s_smpi_received_message_t, 1); + message->buf = NULL; + return message; } void smpi_message_free(void *pointer); void smpi_message_free(void *pointer) { - if (NULL != pointer) { - xbt_free(pointer); - } - + xbt_free(pointer); return; } @@ -69,6 +72,8 @@ void smpi_message_reset(void *pointer); void smpi_message_reset(void *pointer) { + smpi_received_message_t message = pointer; + message->buf = NULL; return; } @@ -79,7 +84,7 @@ int smpi_create_request(void *buf, int count, smpi_mpi_datatype_t datatype, smpi_mpi_request_t request = NULL; - // FIXME: make sure requestptr is not null + // parameter checking prob belongs in smpi_mpi, but this is less repeat code if (NULL == buf) { retval = MPI_ERR_INTERN; } else if (0 > count) { @@ -95,7 +100,7 @@ int smpi_create_request(void *buf, int count, smpi_mpi_datatype_t datatype, } else if (NULL == comm) { retval = MPI_ERR_COMM; } else if (NULL == requestptr) { - retval = MPI_ERR_INTERN; + retval = MPI_ERR_ARG; } else { request = xbt_mallocator_get(smpi_global->request_mallocator); request->comm = comm; @@ -219,15 +224,12 @@ void smpi_global_destroy() smpi_global = NULL; } -// FIXME: smarter algorithm? int smpi_host_index() { - int i; smx_host_t host = SIMIX_host_self(); + smpi_host_data_t hdata = (smpi_host_data_t)SIMIX_host_get_data(host); - for(i = smpi_global->host_count - 1; i > 0 && host != smpi_global->hosts[i]; i--); - - return i; + return hdata->index; } int smpi_run_simulation(int argc, char **argv)