00001
00002
00003
00004
00005
00006
00007
00008 #include "mpioimpl.h"
00009
00010 #ifdef HAVE_WEAK_SYMBOLS
00011
00012 #if defined(HAVE_PRAGMA_WEAK)
00013 #pragma weak MPIO_Request_c2f = PMPIO_Request_c2f
00014 #elif defined(HAVE_PRAGMA_HP_SEC_DEF)
00015 #pragma _HP_SECONDARY_DEF PMPIO_Request_c2f MPIO_Request_c2f
00016 #elif defined(HAVE_PRAGMA_CRI_DUP)
00017 #pragma _CRI duplicate MPIO_Request_c2f as PMPIO_Request_c2f
00018
00019 #endif
00020
00021
00022 #define MPIO_BUILD_PROFILING
00023 #include "mpioprof.h"
00024 #endif
00025 #include "adio_extern.h"
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #ifdef HAVE_MPI_GREQUEST
00038 MPI_Fint MPIO_Request_c2f(MPIO_Request request)
00039 {
00040 return ((MPI_Fint)request);
00041 }
00042 #else
00043
00044 MPI_Fint MPIO_Request_c2f(MPIO_Request request)
00045 {
00046 #ifndef INT_LT_POINTER
00047 return (MPI_Fint) request;
00048 #else
00049 int i;
00050 MPIU_THREADPRIV_DECL;
00051
00052
00053
00054 if ((request <= (MPIO_Request) 0) || (request->cookie != ADIOI_REQ_COOKIE))
00055 {
00056 return (MPI_Fint) 0;
00057 }
00058
00059 MPIU_THREAD_CS_ENTER(ALLFUNC,);
00060 if (!ADIOI_Reqtable) {
00061 ADIOI_Reqtable_max = 1024;
00062 ADIOI_Reqtable = (MPIO_Request *)
00063 ADIOI_Malloc(ADIOI_Reqtable_max*sizeof(MPIO_Request));
00064 ADIOI_Reqtable_ptr = 0;
00065
00066 for (i=0; i<ADIOI_Reqtable_max; i++) ADIOI_Reqtable[i] = MPIO_REQUEST_NULL;
00067 }
00068 if (ADIOI_Reqtable_ptr == ADIOI_Reqtable_max-1) {
00069 ADIOI_Reqtable = (MPIO_Request *) ADIOI_Realloc(ADIOI_Reqtable,
00070 (ADIOI_Reqtable_max+1024)*sizeof(MPIO_Request));
00071 for (i=ADIOI_Reqtable_max; i<ADIOI_Reqtable_max+1024; i++)
00072 ADIOI_Reqtable[i] = MPIO_REQUEST_NULL;
00073 ADIOI_Reqtable_max += 1024;
00074 }
00075 ADIOI_Reqtable_ptr++;
00076 ADIOI_Reqtable[ADIOI_Reqtable_ptr] = request;
00077
00078 MPIU_THREAD_CS_EXIT(ALLFUNC,);
00079 return (MPI_Fint) ADIOI_Reqtable_ptr;
00080 #endif
00081 }
00082 #endif