CHECK_COMM2(1, comm)
if( color != MPI_UNDEFINED)//we use a negative value for MPI_UNDEFINED
CHECK_NEGATIVE(3, MPI_ERR_ARG, color)
- smpi_bench_end();
+ const SmpiBenchGuard suspend_bench;
*comm_out = comm->split(color, key);
- smpi_bench_begin();
return MPI_SUCCESS;
}
{
CHECK_COMM(1)
CHECK_NULL(5, MPI_ERR_ARG, newcomm)
- smpi_bench_end();
+ const SmpiBenchGuard suspend_bench;
*newcomm = comm->split_type(split_type, key, info);
- smpi_bench_begin();
return MPI_SUCCESS;
}
CHECK_COMM(1)
CHECK_GROUP(2, group)
CHECK_NULL(5, MPI_ERR_ARG, comm_out)
- smpi_bench_end();
+ const SmpiBenchGuard suspend_bench;
int retval = MPI_Comm_create(comm, group, comm_out);
- smpi_bench_begin();
return retval;
}
{
CHECK_COMM(1)
CHECK_NULL(2, MPI_ERR_ARG, info)
- *info = comm->info();
+ *info = new simgrid::smpi::Info(comm->info());
return MPI_SUCCESS;
}
int PMPI_Attr_delete(MPI_Comm comm, int keyval) {
CHECK_COMM(1)
+ CHECK_VAL(2, MPI_KEYVAL_INVALID, MPI_ERR_KEYVAL, keyval)
if(keyval == MPI_TAG_UB||keyval == MPI_HOST||keyval == MPI_IO ||keyval == MPI_WTIME_IS_GLOBAL||keyval == MPI_APPNUM
||keyval == MPI_UNIVERSE_SIZE||keyval == MPI_LASTUSEDCODE)
return MPI_ERR_ARG;
CHECK_NULL(4, MPI_ERR_ARG, flag)
*flag = 0;
CHECK_COMM(1)
+ CHECK_VAL(2, MPI_KEYVAL_INVALID, MPI_ERR_KEYVAL, keyval)
switch (keyval) {
case MPI_HOST:
int PMPI_Attr_put(MPI_Comm comm, int keyval, void* attr_value) {
CHECK_COMM(1)
+ CHECK_VAL(2, MPI_KEYVAL_INVALID, MPI_ERR_KEYVAL, keyval)
if(keyval == MPI_TAG_UB||keyval == MPI_HOST||keyval == MPI_IO ||keyval == MPI_WTIME_IS_GLOBAL||keyval == MPI_APPNUM
||keyval == MPI_UNIVERSE_SIZE||keyval == MPI_LASTUSEDCODE)
return MPI_ERR_ARG;
int PMPI_Errhandler_free(MPI_Errhandler* errhandler){
CHECK_NULL(1, MPI_ERR_ARG, errhandler)
+ CHECK_MPI_NULL(1, MPI_ERRHANDLER_NULL, MPI_ERR_ARG, *errhandler)
simgrid::smpi::Errhandler::unref(*errhandler);
+ *errhandler = MPI_ERRHANDLER_NULL;
return MPI_SUCCESS;
}
return MPI_SUCCESS;
}
+MPI_Errhandler PMPI_Errhandler_f2c(MPI_Fint errhan){
+ if(errhan==-1)
+ return MPI_ERRHANDLER_NULL;
+ return simgrid::smpi::Errhandler::f2c(errhan);
+}
+
+MPI_Fint PMPI_Errhandler_c2f(MPI_Errhandler errhan){
+ if(errhan==MPI_ERRHANDLER_NULL)
+ return -1;
+ return errhan->c2f();
+}
+
int PMPI_Comm_create_errhandler( MPI_Comm_errhandler_fn *function, MPI_Errhandler *errhandler){
return MPI_Errhandler_create(function, errhandler);
}