/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2007 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * This file provides the very basic definitions for use in a component * that is to work with MPICH. This defines (by inclusion) the * MPI error reporting routines, memory access routines, and common types. * Using this include (instead of the comprehensive mpiimpl.h file) is * appropriate for modules that perform more basic functions, such as * basic socket communications (see, for example, src/mpid/common/sock/poll) */ #ifndef MPISHARED_H_INCLUDED #define MPISHARED_H_INCLUDED #ifdef MPIIMPL_H_INCLUDED #error 'mpishared.h should not be used if mpiimpl.h is included' #endif /* There are a few definitions that must be made *before* the mpichconf.h file is included. These include the definitions of the error levels and some thread granularity constants */ #include "mpichconfconst.h" /* Make sure that we have the basic definitions */ #ifndef MPICHCONF_H_INCLUDED #include "mpichconf.h" #endif /* if we are defining this, we must define it before including mpl.h */ #if defined(MPICH_DEBUG_MEMINIT) #define MPL_VG_ENABLED 1 #endif #include "mpl.h" /* The most common MPI error classes */ #ifndef MPI_SUCCESS #define MPI_SUCCESS 0 #define MPI_ERR_ARG 12 /* Invalid argument */ #define MPI_ERR_UNKNOWN 13 /* Unknown error */ #define MPI_ERR_OTHER 15 /* Other error; use Error_string */ #define MPI_ERR_INTERN 16 /* Internal error code */ #endif /* For supported thread levels */ #ifndef MPI_THREAD_SINGLE #define MPI_THREAD_SINGLE 0 #define MPI_THREAD_FUNNELED 1 #define MPI_THREAD_SERIALIZED 2 #define MPI_THREAD_MULTIPLE 3 #endif /* Error reporting routines */ #include "mpierror.h" #include "mpierrs.h" /* FIXME: This is extracted from mpi.h.in, where it may not be appropriate */ #define MPICH_ERR_LAST_CLASS 74 /* It is also helpful to know the last valid class */ #include "mpifunc.h" #if !defined(NEEDS_FUNC_ENTER_EXIT_DEFS) /* If no timing choice is selected, this sets the entry/exit macros to empty */ # include "mpitimerimpl.h" #endif #ifdef NEEDS_FUNC_ENTER_EXIT_DEFS /* mpich layer definitions */ #define MPID_MPI_FUNC_ENTER(a) MPIR_FUNC_ENTER(a) #define MPID_MPI_FUNC_EXIT(a) MPIR_FUNC_EXIT(a) #define MPID_MPI_PT2PT_FUNC_ENTER(a) MPIR_FUNC_ENTER(a) #define MPID_MPI_PT2PT_FUNC_EXIT(a) MPIR_FUNC_EXIT(a) #define MPID_MPI_PT2PT_FUNC_ENTER_FRONT(a) MPIR_FUNC_ENTER(a) #define MPID_MPI_PT2PT_FUNC_EXIT_FRONT(a) MPIR_FUNC_EXIT(a) #define MPID_MPI_PT2PT_FUNC_ENTER_BACK(a) MPIR_FUNC_ENTER(a) #define MPID_MPI_PT2PT_FUNC_ENTER_BOTH(a) MPIR_FUNC_ENTER(a) #define MPID_MPI_PT2PT_FUNC_EXIT_BACK(a) MPIR_FUNC_EXIT(a) #define MPID_MPI_PT2PT_FUNC_EXIT_BOTH(a) MPIR_FUNC_EXIT(a) #define MPID_MPI_COLL_FUNC_ENTER(a) MPIR_FUNC_ENTER(a) #define MPID_MPI_COLL_FUNC_EXIT(a) MPIR_FUNC_EXIT(a) #define MPID_MPI_RMA_FUNC_ENTER(a) MPIR_FUNC_ENTER(a) #define MPID_MPI_RMA_FUNC_EXIT(a) MPIR_FUNC_EXIT(a) #define MPID_MPI_INIT_FUNC_ENTER(a) MPIR_FUNC_ENTER(a) #define MPID_MPI_INIT_FUNC_EXIT(a) MPIR_FUNC_EXIT(a) #define MPID_MPI_FINALIZE_FUNC_ENTER(a) MPIR_FUNC_ENTER(a) #define MPID_MPI_FINALIZE_FUNC_EXIT(a) MPIR_FUNC_EXIT(a) /* device layer definitions */ #define MPIDI_FUNC_ENTER(a) MPIR_FUNC_ENTER(a) #define MPIDI_FUNC_EXIT(a) MPIR_FUNC_EXIT(a) #define MPIDI_PT2PT_FUNC_ENTER(a) MPIR_FUNC_ENTER(a) #define MPIDI_PT2PT_FUNC_EXIT(a) MPIR_FUNC_EXIT(a) #define MPIDI_PT2PT_FUNC_ENTER_FRONT(a) MPIR_FUNC_ENTER(a) #define MPIDI_PT2PT_FUNC_EXIT_FRONT(a) MPIR_FUNC_EXIT(a) #define MPIDI_PT2PT_FUNC_ENTER_BACK(a) MPIR_FUNC_ENTER(a) #define MPIDI_PT2PT_FUNC_ENTER_BOTH(a) MPIR_FUNC_ENTER(a) #define MPIDI_PT2PT_FUNC_EXIT_BACK(a) MPIR_FUNC_EXIT(a) #define MPIDI_PT2PT_FUNC_EXIT_BOTH(a) MPIR_FUNC_EXIT(a) #define MPIDI_COLL_FUNC_ENTER(a) MPIR_FUNC_ENTER(a) #define MPIDI_COLL_FUNC_EXIT(a) MPIR_FUNC_EXIT(a) #define MPIDI_RMA_FUNC_ENTER(a) MPIR_FUNC_ENTER(a) #define MPIDI_RMA_FUNC_EXIT(a) MPIR_FUNC_EXIT(a) #define MPIDI_INIT_FUNC_ENTER(a) MPIR_FUNC_ENTER(a) #define MPIDI_INIT_FUNC_EXIT(a) MPIR_FUNC_EXIT(a) #define MPIDI_FINALIZE_FUNC_ENTER(a) MPIR_FUNC_ENTER(a) #define MPIDI_FINALIZE_FUNC_EXIT(a) MPIR_FUNC_EXIT(a) /* evaporate the timing macros since timing is not selected */ #define MPIU_Timer_init(rank, size) #define MPIU_Timer_finalize() #endif /* NEEDS_FUNC_ENTER_EXIT_DEFS */ /* Add support for the memory allocation routines */ #define MPIU_MEM_NOSTDIO #include "mpimem.h" /* Add support for the debugging macros */ #include "mpidbg.h" /* Add support for the assert and strerror routines */ #include "mpiutil.h" /* Use this macro for each parameter to a function that is not referenced in the body of the function */ #ifdef HAVE_WINDOWS_H #define MPIU_UNREFERENCED_ARG(a) a #else #define MPIU_UNREFERENCED_ARG(a) #endif #endif