root/mpich2/trunk/src/mpi/romio/mpi-io/mpioimpl.h @ 4863

Revision 4863, 2.5 KB (checked in by robl, 5 months ago)

Mostly BillG: introduce quiet-make from MPICH2 to ROMIO

Line 
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). */
36void MPIR_Nest_incr_export(void);
37void 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 */
44void MPIR_Nest_incr_export_dbg(const char *, int);
45void 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 */
67struct MPIR_Info {
68    int cookie;
69    char *key, *value;
70    struct MPIR_Info *next;
71};
72
73#define MPIR_INFO_COOKIE 5835657
74
75MPI_Delete_function ADIOI_End_call;
76
77/* common initialization routine */
78void 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
Note: See TracBrowser for help on using the browser.