
00001 /* -*- Mode: C; c-basic-offset:4 ; -*- */ 00002 /* 00003 * $Id$ 00004 * 00005 * Copyright (C) 1997 University of Chicago. 00006 * See COPYRIGHT notice in top-level directory. 00007 */ 00008 00009 #include "mpioimpl.h" 00010 00011 #ifdef HAVE_WEAK_SYMBOLS 00012 00013 #if defined(HAVE_PRAGMA_WEAK) 00014 #pragma weak MPIO_Request_c2f = PMPIO_Request_c2f 00015 #elif defined(HAVE_PRAGMA_HP_SEC_DEF) 00016 #pragma _HP_SECONDARY_DEF PMPIO_Request_c2f MPIO_Request_c2f 00017 #elif defined(HAVE_PRAGMA_CRI_DUP) 00018 #pragma _CRI duplicate MPIO_Request_c2f as PMPIO_Request_c2f 00019 /* end of weak pragmas */ 00020 #endif 00021 00022 /* Include mapping from MPI->PMPI */ 00023 #define MPIO_BUILD_PROFILING 00024 #include "mpioprof.h" 00025 #endif 00026 #include "adio_extern.h" 00027 00028 /*@ 00029 MPIO_Request_c2f - Translates a C I/O-request handle to a 00030 Fortran I/O-request handle 00031 00032 Input Parameters: 00033 . request - C I/O-request handle (handle) 00034 00035 Return Value: 00036 Fortran I/O-request handle (integer) 00037 @*/ 00038 MPI_Fint MPIO_Request_c2f(MPIO_Request request) 00039 { 00040 #ifndef INT_LT_POINTER 00041 return (MPI_Fint) request; 00042 #else 00043 int i; 00044 00045 if ((request <= (MPIO_Request) 0) || (request->cookie != ADIOI_REQ_COOKIE)) 00046 return (MPI_Fint) 0; 00047 if (!ADIOI_Reqtable) { 00048 ADIOI_Reqtable_max = 1024; 00049 ADIOI_Reqtable = (MPIO_Request *) 00050 ADIOI_Malloc(ADIOI_Reqtable_max*sizeof(MPIO_Request)); 00051 ADIOI_Reqtable_ptr = 0; /* 0 can't be used though, because 00052 MPIO_REQUEST_NULL=0 */ 00053 for (i=0; i<ADIOI_Reqtable_max; i++) ADIOI_Reqtable[i] = MPIO_REQUEST_NULL; 00054 } 00055 if (ADIOI_Reqtable_ptr == ADIOI_Reqtable_max-1) { 00056 ADIOI_Reqtable = (MPIO_Request *) ADIOI_Realloc(ADIOI_Reqtable, 00057 (ADIOI_Reqtable_max+1024)*sizeof(MPIO_Request)); 00058 for (i=ADIOI_Reqtable_max; i<ADIOI_Reqtable_max+1024; i++) 00059 ADIOI_Reqtable[i] = MPIO_REQUEST_NULL; 00060 ADIOI_Reqtable_max += 1024; 00061 } 00062 ADIOI_Reqtable_ptr++; 00063 ADIOI_Reqtable[ADIOI_Reqtable_ptr] = request; 00064 return (MPI_Fint) ADIOI_Reqtable_ptr; 00065 #endif 00066 }
1.5.5