-: 0:Source:/home/MPI/testing/mpich2/mpich2/src/mpi/romio/mpi-io/seek_sh.c
-: 0:Graph:seek_sh.gcno
-: 0:Data:seek_sh.gcda
-: 0:Runs:537
-: 0:Programs:143
-: 1:/* -*- Mode: C; c-basic-offset:4 ; -*- */
-: 2:/*
-: 3: * Copyright (C) 1997 University of Chicago.
-: 4: * See COPYRIGHT notice in top-level directory.
-: 5: */
-: 6:
-: 7:#include "mpioimpl.h"
-: 8:
-: 9:#ifdef HAVE_WEAK_SYMBOLS
-: 10:
-: 11:#if defined(HAVE_PRAGMA_WEAK)
-: 12:#pragma weak MPI_File_seek_shared = PMPI_File_seek_shared
-: 13:#elif defined(HAVE_PRAGMA_HP_SEC_DEF)
-: 14:#pragma _HP_SECONDARY_DEF PMPI_File_seek_shared MPI_File_seek_shared
-: 15:#elif defined(HAVE_PRAGMA_CRI_DUP)
-: 16:#pragma _CRI duplicate MPI_File_seek_shared as PMPI_File_seek_shared
-: 17:/* end of weak pragmas */
-: 18:#endif
-: 19:
-: 20:/* Include mapping from MPI->PMPI */
-: 21:#define MPIO_BUILD_PROFILING
-: 22:#include "mpioprof.h"
-: 23:#endif
-: 24:
-: 25:/*@
-: 26: MPI_File_seek_shared - Updates the shared file pointer
-: 27:
-: 28:Input Parameters:
-: 29:. fh - file handle (handle)
-: 30:. offset - file offset (integer)
-: 31:. whence - update mode (state)
-: 32:
-: 33:.N fortran
-: 34:@*/
-: 35:int MPI_File_seek_shared(MPI_File mpi_fh, MPI_Offset offset, int whence)
48: 36:{
48: 37: int error_code=MPI_SUCCESS, tmp_whence, myrank;
-: 38: static char myname[] = "MPI_FILE_SEEK_SHARED";
-: 39: MPI_Offset curr_offset, eof_offset, tmp_offset;
-: 40: ADIO_File fh;
48: 41: MPIU_THREADPRIV_DECL;
-: 42:
48: 43: MPIU_THREAD_CS_ENTER(ALLFUNC,);
48: 44: MPIR_Nest_incr();
-: 45:
48: 46: fh = MPIO_File_resolve(mpi_fh);
-: 47:
|
-: 48: /* --BEGIN ERROR HANDLING-- */
48: 49: MPIO_CHECK_FILE_HANDLE(fh, myname, error_code);
48: 50: MPIO_CHECK_NOT_SEQUENTIAL_MODE(fh, myname, error_code);
48: 51: MPIO_CHECK_FS_SUPPORTS_SHARED(fh, myname, error_code);
-: 52: /* --END ERROR HANDLING-- */
-: 53:
|
48: 54: tmp_offset = offset;
48: 55: MPI_Bcast(&tmp_offset, 1, ADIO_OFFSET, 0, fh->comm);
|
-: 56: /* --BEGIN ERROR HANDLING-- */
48: 57: if (tmp_offset != offset)
-: 58: {
#####: 59: error_code = MPIO_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE,
-: 60: myname, __LINE__, MPI_ERR_ARG,
-: 61: "**notsame", 0);
#####: 62: error_code = MPIO_Err_return_file(fh, error_code);
#####: 63: goto fn_exit;
-: 64: }
-: 65: /* --END ERROR HANDLING-- */
-: 66:
|
48: 67: tmp_whence = whence;
48: 68: MPI_Bcast(&tmp_whence, 1, MPI_INT, 0, fh->comm);
|
-: 69: /* --BEGIN ERROR HANDLING-- */
48: 70: if (tmp_whence != whence)
-: 71: {
#####: 72: error_code = MPIO_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE,
-: 73: myname, __LINE__, MPI_ERR_ARG,
-: 74: "**iobadwhence", 0);
#####: 75: error_code = MPIO_Err_return_file(fh, error_code);
#####: 76: goto fn_exit;
-: 77: }
-: 78: /* --END ERROR HANDLING-- */
-: 79:
|
48: 80: ADIOI_TEST_DEFERRED(fh, "MPI_File_seek_shared", &error_code);
-: 81:
48: 82: MPI_Comm_rank(fh->comm, &myrank);
-: 83:
48: 84: if (!myrank)
-: 85: {
12: 86: switch(whence)
-: 87: {
-: 88: case MPI_SEEK_SET:
|
-: 89: /* --BEGIN ERROR HANDLING-- */
11: 90: if (offset < 0)
-: 91: {
#####: 92: error_code = MPIO_Err_create_code(MPI_SUCCESS,
-: 93: MPIR_ERR_RECOVERABLE,
-: 94: myname, __LINE__,
-: 95: MPI_ERR_ARG,
-: 96: "**iobadoffset", 0);
#####: 97: error_code = MPIO_Err_return_file(fh, error_code);
#####: 98: goto fn_exit;
-: 99: }
-: 100: /* --END ERROR HANDLING-- */
-: 101: break;
-: 102: case MPI_SEEK_CUR:
-: 103: /* get current location of shared file pointer */
|
#####: 104: ADIO_Get_shared_fp(fh, 0, &curr_offset, &error_code);
|
-: 105: /* --BEGIN ERROR HANDLING-- */
#####: 106: if (error_code != MPI_SUCCESS)
-: 107: {
#####: 108: error_code = MPIO_Err_create_code(MPI_SUCCESS,
-: 109: MPIR_ERR_FATAL,
-: 110: myname, __LINE__,
-: 111: MPI_ERR_INTERN,
-: 112: "**iosharedfailed", 0);
#####: 113: error_code = MPIO_Err_return_file(fh, error_code);
#####: 114: goto fn_exit;
-: 115: }
-: 116: /* --END ERROR HANDLING-- */
|
#####: 117: offset += curr_offset;
|
-: 118: /* --BEGIN ERROR HANDLING-- */
#####: 119: if (offset < 0)
-: 120: {
#####: 121: error_code = MPIO_Err_create_code(MPI_SUCCESS,
-: 122: MPIR_ERR_RECOVERABLE,
-: 123: myname, __LINE__,
-: 124: MPI_ERR_ARG,
-: 125: "**ionegoffset", 0);
#####: 126: error_code = MPIO_Err_return_file(fh, error_code);
#####: 127: goto fn_exit;
-: 128: }
-: 129: /* --END ERROR HANDLING-- */
-: 130: break;
-: 131: case MPI_SEEK_END:
-: 132: /* find offset corr. to end of file */
|
1: 133: ADIOI_Get_eof_offset(fh, &eof_offset);
1: 134: offset += eof_offset;
|
-: 135: /* --BEGIN ERROR HANDLING-- */
1: 136: if (offset < 0)
-: 137: {
#####: 138: error_code = MPIO_Err_create_code(MPI_SUCCESS,
-: 139: MPIR_ERR_RECOVERABLE,
-: 140: myname, __LINE__,
-: 141: MPI_ERR_ARG,
-: 142: "**ionegoffset", 0);
#####: 143: error_code = MPIO_Err_return_file(fh, error_code);
#####: 144: goto fn_exit;
-: 145: }
-: 146: /* --END ERROR HANDLING-- */
-: 147: break;
-: 148: default:
-: 149: /* --BEGIN ERROR HANDLING-- */
#####: 150: error_code = MPIO_Err_create_code(MPI_SUCCESS,
-: 151: MPIR_ERR_RECOVERABLE,
-: 152: myname, __LINE__, MPI_ERR_ARG,
-: 153: "**iobadwhence", 0);
#####: 154: error_code = MPIO_Err_return_file(fh, error_code);
#####: 155: goto fn_exit;
-: 156: /* --END ERROR HANDLING-- */
-: 157: }
-: 158:
|
12: 159: ADIO_Set_shared_fp(fh, offset, &error_code);
|
-: 160: /* --BEGIN ERROR HANDLING-- */
12: 161: if (error_code != MPI_SUCCESS)
-: 162: {
#####: 163: error_code = MPIO_Err_create_code(MPI_SUCCESS,
-: 164: MPIR_ERR_FATAL,
-: 165: myname, __LINE__,
-: 166: MPI_ERR_INTERN,
-: 167: "**iosharedfailed", 0);
#####: 168: error_code = MPIO_Err_return_file(fh, error_code);
#####: 169: goto fn_exit;
-: 170: }
-: 171: /* --END ERROR HANDLING-- */
-: 172:
-: 173: }
-: 174:
-: 175: /* FIXME: explain why the barrier is necessary */
|
48: 176: MPI_Barrier(fh->comm);
-: 177:
48: 178: error_code = MPI_SUCCESS;
-: 179:
48: 180:fn_exit:
48: 181: MPIR_Nest_decr();
48: 182: MPIU_THREAD_CS_EXIT(ALLFUNC,);
-: 183:
48: 184: return error_code;
-: 185:}
|