int MPI_File_read_ordered_end(MPI_File fh, void *buf, MPI_Status *status) { int rc; if (MPI_PARAM_CHECK) { rc = MPI_SUCCESS; OMPI_ERR_INIT_FINALIZE(FUNC_NAME); if (ompi_file_invalid(fh)) { fh = MPI_FILE_NULL; rc = MPI_ERR_FILE; } OMPI_ERRHANDLER_CHECK(rc, fh, rc, FUNC_NAME); } OPAL_CR_ENTER_LIBRARY(); /* Call the back-end io component function */ switch (fh->f_io_version) { case MCA_IO_BASE_V_2_0_0: rc = fh->f_io_selected_module.v2_0_0. io_module_file_read_ordered_end(fh, buf, status); break; default: rc = MPI_ERR_INTERN; break; } /* All done */ OMPI_ERRHANDLER_RETURN(rc, fh, rc, FUNC_NAME); }
int MPI_File_get_atomicity(MPI_File fh, int *flag) { int rc; if (MPI_PARAM_CHECK) { rc = MPI_SUCCESS; OMPI_ERR_INIT_FINALIZE(FUNC_NAME); if (ompi_file_invalid(fh)) { rc = MPI_ERR_FILE; fh = MPI_FILE_NULL; } else if (NULL == flag) { rc = MPI_ERR_ARG; } OMPI_ERRHANDLER_CHECK(rc, fh, rc, FUNC_NAME); } OPAL_CR_ENTER_LIBRARY(); /* Call the back-end io component function */ switch (fh->f_io_version) { case MCA_IO_BASE_V_2_0_0: rc = fh->f_io_selected_module.v2_0_0. io_module_file_get_atomicity(fh, flag); break; default: rc = MPI_ERR_INTERN; break; } /* All done */ OMPI_ERRHANDLER_RETURN(rc, fh, rc, FUNC_NAME); }
int MPI_File_set_info(MPI_File fh, MPI_Info info) { int rc; if (MPI_PARAM_CHECK) { rc = MPI_SUCCESS; OMPI_ERR_INIT_FINALIZE(FUNC_NAME); if (ompi_file_invalid(fh)) { fh = MPI_FILE_NULL; rc = MPI_ERR_FILE; } OMPI_ERRHANDLER_CHECK(rc, fh, rc, FUNC_NAME); } /* Call the back-end io component function */ switch (fh->f_io_version) { case MCA_IO_BASE_V_2_0_0: rc = fh->f_io_selected_module.v2_0_0. io_module_file_set_info(fh, info); break; default: rc = MPI_ERR_INTERN; break; } /* All done */ OMPI_ERRHANDLER_RETURN(rc, fh, rc, FUNC_NAME); }
int MPI_File_get_byte_offset(MPI_File fh, MPI_Offset offset, MPI_Offset *disp) { int rc; if (MPI_PARAM_CHECK) { rc = MPI_SUCCESS; OMPI_ERR_INIT_FINALIZE(FUNC_NAME); if (ompi_file_invalid(fh)) { rc = MPI_ERR_FILE; fh = MPI_FILE_NULL; } else if (NULL == disp) { rc = MPI_ERR_ARG; } OMPI_ERRHANDLER_CHECK(rc, fh, rc, FUNC_NAME); } /* Call the back-end io component function */ switch (fh->f_io_version) { case MCA_IO_BASE_V_2_0_0: rc = fh->f_io_selected_module.v2_0_0. io_module_file_get_byte_offset(fh, offset, disp); break; default: rc = MPI_ERR_INTERN; break; } /* All done */ OMPI_ERRHANDLER_RETURN(rc, fh, rc, FUNC_NAME); }
int MPI_File_get_info(MPI_File fh, MPI_Info *info_used) { OPAL_CR_NOOP_PROGRESS(); if (MPI_PARAM_CHECK) { OMPI_ERR_INIT_FINALIZE(FUNC_NAME); if (NULL == info_used) { return OMPI_ERRHANDLER_INVOKE(fh, MPI_ERR_INFO, FUNC_NAME); } if (ompi_file_invalid(fh)) { return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_COMM, FUNC_NAME); } } if (NULL == fh->super.s_info) { /* * Setup any defaults if MPI_Win_set_info was never called */ opal_infosubscribe_change_info(fh, &MPI_INFO_NULL->super); } (*info_used) = OBJ_NEW(ompi_info_t); if (NULL == (*info_used)) { return OMPI_ERRHANDLER_INVOKE(fh, MPI_ERR_NO_MEM, FUNC_NAME); } opal_info_dup(fh->super.s_info, &(*info_used)->super); return OMPI_SUCCESS; }
int MPI_File_close(MPI_File *fh) { int rc; if (MPI_PARAM_CHECK) { OMPI_ERR_INIT_FINALIZE(FUNC_NAME); /* Note that MPI-2:9.7 (p265) says that errors in MPI_FILE_CLOSE should invoke the default error handler on MPI_FILE_NULL */ if (NULL == fh || ompi_file_invalid(*fh)) { return OMPI_ERRHANDLER_INVOKE(MPI_FILE_NULL, MPI_ERR_FILE, FUNC_NAME); } } OPAL_CR_ENTER_LIBRARY(); /* Release the MPI_File; the destructor releases the component, zeroes out fiels, etc. */ rc = ompi_file_close(fh); OMPI_ERRHANDLER_RETURN(rc, *fh, rc, FUNC_NAME); }
int MPI_File_set_info(MPI_File fh, MPI_Info info) { int ret; OPAL_CR_NOOP_PROGRESS(); if (MPI_PARAM_CHECK) { OMPI_ERR_INIT_FINALIZE(FUNC_NAME); if (ompi_file_invalid(fh)) { return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_FILE, FUNC_NAME); } if (NULL == info || MPI_INFO_NULL == info || ompi_info_is_freed(info)) { return OMPI_ERRHANDLER_INVOKE(fh, MPI_ERR_INFO, FUNC_NAME); } } OPAL_CR_ENTER_LIBRARY(); ret = opal_infosubscribe_change_info(fh, &info->super); OMPI_ERRHANDLER_RETURN(ret, fh, ret, FUNC_NAME); }
int MPI_File_iread_at(MPI_File fh, MPI_Offset offset, void *buf, int count, MPI_Datatype datatype, MPI_Request *request) { int rc; mca_io_base_request_t *io_request; if (MPI_PARAM_CHECK) { rc = MPI_SUCCESS; OMPI_ERR_INIT_FINALIZE(FUNC_NAME); if (ompi_file_invalid(fh)) { fh = MPI_FILE_NULL; rc = MPI_ERR_FILE; } else if (count < 0) { rc = MPI_ERR_COUNT; } else { OMPI_CHECK_DATATYPE_FOR_RECV(rc, datatype, count); } OMPI_ERRHANDLER_CHECK(rc, fh, rc, FUNC_NAME); } /* Get a request */ if (OMPI_SUCCESS != mca_io_base_request_alloc(fh, &io_request)) { return OMPI_ERRHANDLER_INVOKE(fh, MPI_ERR_NO_MEM, FUNC_NAME); } *request = (ompi_request_t*) io_request; /* Call the back-end io component function */ switch (fh->f_io_version) { case MCA_IO_BASE_V_1_0_0: rc = fh->f_io_selected_module.v1_0_0. io_module_file_iread_at(fh, offset, buf, count, datatype, io_request); break; default: rc = MPI_ERR_INTERN; break; } /* All done */ OMPI_ERRHANDLER_RETURN(rc, fh, rc, FUNC_NAME); }
MPI_Fint MPI_File_c2f(MPI_File file) { OPAL_CR_NOOP_PROGRESS(); if (MPI_PARAM_CHECK) { OMPI_ERR_INIT_FINALIZE(FUNC_NAME); /* Note that ompi_file_invalid() explicitly checks for MPI_FILE_NULL, but MPI_FILE_C2F is supposed to treat MPI_FILE_NULL as a valid file (and therefore return a valid Fortran handle for it). Hence, this function should not return an error if MPI_FILE_NULL is passed in. See a big comment in ompi/communicator/communicator.h about this. */ if (ompi_file_invalid(file) && MPI_FILE_NULL != file) { return OMPI_INT_2_FINT(-1); } } return OMPI_INT_2_FINT(file->f_f_to_c_index); }
int MPI_File_read_ordered(MPI_File fh, void *buf, int count, MPI_Datatype datatype, MPI_Status *status) { int rc; if (MPI_PARAM_CHECK) { rc = MPI_SUCCESS; OMPI_ERR_INIT_FINALIZE(FUNC_NAME); if (ompi_file_invalid(fh)) { fh = MPI_FILE_NULL; rc = MPI_ERR_FILE; } else if (count < 0) { rc = MPI_ERR_COUNT; } else { OMPI_CHECK_DATATYPE_FOR_RECV(rc, datatype, count); } OMPI_ERRHANDLER_CHECK(rc, fh, rc, FUNC_NAME); } /* Call the back-end io component function */ switch (fh->f_io_version) { case MCA_IO_BASE_V_1_0_0: rc = fh->f_io_selected_module.v1_0_0. io_module_file_read_ordered(fh, buf, count, datatype, status); break; default: rc = MPI_ERR_INTERN; break; } /* All done */ OMPI_ERRHANDLER_RETURN(rc, fh, rc, FUNC_NAME); }
int MPI_File_seek(MPI_File fh, MPI_Offset offset, int whence) { int rc; if (MPI_PARAM_CHECK) { rc = MPI_SUCCESS; OMPI_ERR_INIT_FINALIZE(FUNC_NAME); if (ompi_file_invalid(fh)) { rc = MPI_ERR_FILE; fh = MPI_FILE_NULL; } else if (MPI_SEEK_SET != whence && MPI_SEEK_CUR != whence && MPI_SEEK_END != whence) { rc = MPI_ERR_ARG; } OMPI_ERRHANDLER_CHECK(rc, fh, rc, FUNC_NAME); } OPAL_CR_ENTER_LIBRARY(); /* Call the back-end io component function */ switch (fh->f_io_version) { case MCA_IO_BASE_V_2_0_0: rc = fh->f_io_selected_module.v2_0_0. io_module_file_seek(fh, offset, whence); break; default: rc = MPI_ERR_INTERN; break; } /* All done */ OMPI_ERRHANDLER_RETURN(rc, fh, rc, FUNC_NAME); }