return retval;
}
-int MPI_Type_size(MPI_Datatype datatype, size_t* size) {
+int MPI_Type_size(MPI_Datatype datatype, int* size) {
int retval;
smpi_bench_end(-1, NULL);
} else if(size == NULL) {
retval = MPI_ERR_ARG;
} else {
- *size = smpi_datatype_size(datatype);
+ *size = (int)smpi_datatype_size(datatype);
retval = MPI_SUCCESS;
}
smpi_bench_begin(-1, NULL);
}
-int MPI_Get_processor_name( char *name, int *resultlen ) {
+int MPI_Get_processor_name(char* name, int* resultlen) {
int retval = MPI_SUCCESS;
+
smpi_bench_end(-1, NULL);
strncpy( name , SIMIX_host_get_name(SIMIX_host_self()), MPI_MAX_PROCESSOR_NAME-1);
*resultlen= strlen(name) > MPI_MAX_PROCESSOR_NAME ? MPI_MAX_PROCESSOR_NAME : strlen(name);
return retval;
}
+int MPI_Get_count(MPI_Status* status, MPI_Datatype datatype, int* count) {
+ int retval = MPI_SUCCESS;
+ size_t size;
+
+ smpi_bench_end(-1, NULL);
+ if (status == NULL || count == NULL) {
+ retval = MPI_ERR_ARG;
+ } else if (datatype == MPI_DATATYPE_NULL) {
+ retval = MPI_ERR_TYPE;
+ } else {
+ size = smpi_datatype_size(datatype);
+ if (size == 0) {
+ *count = 0;
+ } else if (status->count % size != 0) {
+ retval = MPI_UNDEFINED;
+ } else {
+ *count = smpi_mpi_get_count(status, datatype);
+ }
+ }
+ smpi_bench_begin(-1, NULL);
+ return retval;
+}