00001
00002
00003
00004
00005
00006
00007
00008
00009 #include "mpioimpl.h"
00010 #include "adio_extern.h"
00011
00012 #ifdef HAVE_WEAK_SYMBOLS
00013
00014 #if defined(HAVE_PRAGMA_WEAK)
00015 #pragma weak MPI_File_get_errhandler = PMPI_File_get_errhandler
00016 #elif defined(HAVE_PRAGMA_HP_SEC_DEF)
00017 #pragma _HP_SECONDARY_DEF PMPI_File_get_errhandler MPI_File_get_errhandler
00018 #elif defined(HAVE_PRAGMA_CRI_DUP)
00019 #pragma _CRI duplicate MPI_File_get_errhandler as PMPI_File_get_errhandler
00020
00021 #endif
00022
00023
00024 #define MPIO_BUILD_PROFILING
00025 #include "mpioprof.h"
00026 #endif
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 int MPI_File_get_errhandler(MPI_File fh, MPI_Errhandler *errhandler)
00040 {
00041 int error_code = MPI_SUCCESS;
00042 #ifndef PRINT_ERR_MSG
00043 static char myname[] = "MPI_FILE_GET_ERRHANDLER";
00044 #endif
00045
00046 if (fh == MPI_FILE_NULL) *errhandler = ADIOI_DFLT_ERR_HANDLER;
00047 else if (fh->cookie != ADIOI_FILE_COOKIE) {
00048 #ifdef PRINT_ERR_MSG
00049 FPRINTF(stderr, "MPI_File_close: Invalid file handle\n");
00050 MPI_Abort(MPI_COMM_WORLD, 1);
00051 #else
00052 error_code = MPIR_Err_setmsg(MPI_ERR_FILE, MPIR_ERR_FILE_CORRUPT,
00053 myname, (char *) 0, (char *) 0);
00054 return ADIOI_Error(MPI_FILE_NULL, error_code, myname);
00055 #endif
00056 }
00057 else *errhandler = fh->err_handler;
00058
00059 return error_code;
00060 }