| 1 | /* -*- Mode: C; c-basic-offset:4 ; -*- */ |
|---|
| 2 | /* |
|---|
| 3 | * |
|---|
| 4 | * Copyright (C) 1997 University of Chicago. |
|---|
| 5 | * See COPYRIGHT notice in top-level directory. |
|---|
| 6 | */ |
|---|
| 7 | |
|---|
| 8 | |
|---|
| 9 | /* header file for MPI-IO implementation. not intended to be |
|---|
| 10 | user-visible */ |
|---|
| 11 | |
|---|
| 12 | #ifndef MPIOIMPL_INCLUDE |
|---|
| 13 | #define MPIOIMPL_INCLUDE |
|---|
| 14 | |
|---|
| 15 | #include "adio.h" |
|---|
| 16 | #include "mpio.h" |
|---|
| 17 | |
|---|
| 18 | /* FIXME: We should be more restricted in what we include from MPICH2 |
|---|
| 19 | into ROMIO */ |
|---|
| 20 | #ifdef ROMIO_INSIDE_MPICH2 |
|---|
| 21 | #include "mpiimpl.h" |
|---|
| 22 | #include "mpiimplthread.h" |
|---|
| 23 | |
|---|
| 24 | /* Use the routine versions of the nest macros, to avoid requiring |
|---|
| 25 | access to the MPIR_Process and MPIR_Thread structures */ |
|---|
| 26 | #ifdef MPIR_Nest_incr |
|---|
| 27 | #undef MPIR_Nest_incr |
|---|
| 28 | #undef MPIR_Nest_decr |
|---|
| 29 | #endif |
|---|
| 30 | |
|---|
| 31 | #ifndef MPICH_DEBUG_NESTING |
|---|
| 32 | /* These implement the nesting support expected by MPICH2; the primary |
|---|
| 33 | purpose of these is to cause MPI routines to return error codes |
|---|
| 34 | instead of invoking an error handler (which would be incorrect, |
|---|
| 35 | since the relevant MPI_File error handler should be invoked). */ |
|---|
| 36 | void MPIR_Nest_incr_export(void); |
|---|
| 37 | void MPIR_Nest_decr_export(void); |
|---|
| 38 | #define MPIR_Nest_incr() MPIR_Nest_incr_export() |
|---|
| 39 | #define MPIR_Nest_decr() MPIR_Nest_decr_export() |
|---|
| 40 | #else |
|---|
| 41 | /* These implement the nesting support with additional code to |
|---|
| 42 | provide traces of nest increments and decrements, which are very |
|---|
| 43 | helpful in finding errors in properly updating the nesting values */ |
|---|
| 44 | void MPIR_Nest_incr_export_dbg(const char *, int); |
|---|
| 45 | void MPIR_Nest_decr_export_dbg(const char *, int); |
|---|
| 46 | #define MPIR_Nest_incr() MPIR_Nest_incr_export_dbg(__FILE__,__LINE__) |
|---|
| 47 | #define MPIR_Nest_decr() MPIR_Nest_decr_export_dbg(__FILE__,__LINE__) |
|---|
| 48 | #endif |
|---|
| 49 | |
|---|
| 50 | #else /* not ROMIO_INSIDE_MPICH2 */ |
|---|
| 51 | /* Any MPI implementation that wishes to follow the thread-safety and |
|---|
| 52 | error reporting features provided by MPICH2 must implement these |
|---|
| 53 | four functions. Defining these as empty should not change the behavior |
|---|
| 54 | of correct programs */ |
|---|
| 55 | #define MPIU_THREAD_CS_ENTER(x,y) |
|---|
| 56 | #define MPIU_THREAD_CS_EXIT(x,y) |
|---|
| 57 | #define MPIR_Nest_incr() |
|---|
| 58 | #define MPIR_Nest_decr() |
|---|
| 59 | #ifdef HAVE_WINDOWS_H |
|---|
| 60 | #define MPIU_UNREFERENCED_ARG(a) a |
|---|
| 61 | #else |
|---|
| 62 | #define MPIU_UNREFERENCED_ARG(a) |
|---|
| 63 | #endif |
|---|
| 64 | #endif /* ROMIO_INSIDE_MPICH2 */ |
|---|
| 65 | |
|---|
| 66 | /* info is a linked list of these structures */ |
|---|
| 67 | struct MPIR_Info { |
|---|
| 68 | int cookie; |
|---|
| 69 | char *key, *value; |
|---|
| 70 | struct MPIR_Info *next; |
|---|
| 71 | }; |
|---|
| 72 | |
|---|
| 73 | #define MPIR_INFO_COOKIE 5835657 |
|---|
| 74 | |
|---|
| 75 | MPI_Delete_function ADIOI_End_call; |
|---|
| 76 | |
|---|
| 77 | /* common initialization routine */ |
|---|
| 78 | void MPIR_MPIOInit(int * error_code); |
|---|
| 79 | |
|---|
| 80 | |
|---|
| 81 | #include "mpioprof.h" |
|---|
| 82 | |
|---|
| 83 | #ifdef MPI_hpux |
|---|
| 84 | # include "mpioinst.h" |
|---|
| 85 | #endif /* MPI_hpux */ |
|---|
| 86 | |
|---|
| 87 | #endif |
|---|