void mpi_win_set_name_f(MPI_Fint *win, char *win_name, MPI_Fint *ierr, int name_len) { int ret, c_err; char *c_name; MPI_Win c_win; c_win = MPI_Win_f2c(*win); /* Convert the fortran string */ if (OMPI_SUCCESS != (ret = ompi_fortran_string_f2c(win_name, name_len, &c_name))) { c_err = OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, ret, "MPI_WIN_SET_NAME"); *ierr = OMPI_INT_2_FINT(c_err); return; } /* Call the C function */ *ierr = OMPI_INT_2_FINT(MPI_Win_set_name(c_win, c_name)); /* Free the C name */ free(c_name); }
int main(int argc, char *argv[]) { int errs = 0; MPI_Win win; int cnt, namelen; char name[MPI_MAX_OBJECT_NAME], nameout[MPI_MAX_OBJECT_NAME]; MTest_Init(&argc, &argv); cnt = 0; while (MTestGetWin(&win, 1)) { if (win == MPI_WIN_NULL) continue; sprintf(name, "win-%d", cnt); cnt++; MPI_Win_set_name(win, name); nameout[0] = 0; MPI_Win_get_name(win, nameout, &namelen); if (strcmp(name, nameout)) { errs++; printf("Unexpected name, was %s but should be %s\n", nameout, name); } MTestFreeWin(&win); } MTest_Finalize(errs); return MTestReturnValue(errs); }