60485ff95f
OMPI_* to OPAL_*. This allows opal layer to be used more independent from the whole of ompi. NOTE: 9 "svn mv" operations immediately follow this commit. This commit was SVN r21180.
110 строки
3.7 KiB
C
110 строки
3.7 KiB
C
/*
|
|
* Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana
|
|
* University Research and Technology
|
|
* Corporation. All rights reserved.
|
|
* Copyright (c) 2004-2005 The University of Tennessee and The University
|
|
* of Tennessee Research Foundation. All rights
|
|
* reserved.
|
|
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
|
* University of Stuttgart. All rights reserved.
|
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
|
* All rights reserved.
|
|
* Copyright (c) 2007 Cisco Systems, Inc. All rights reserved.
|
|
* $COPYRIGHT$
|
|
*
|
|
* Additional copyrights may follow
|
|
*
|
|
* $HEADER$
|
|
*/
|
|
|
|
/**
|
|
* @file
|
|
*
|
|
* This file does two things:
|
|
*
|
|
* 1. Provides typedef for the Fortran versions of the callbacks
|
|
* registered by MPI_REGISTER_DATAREP. These typedefs are needed for
|
|
* the Fortran MPI API.
|
|
*
|
|
* 2. Provides the sentinel value functions/function pointers for
|
|
* Fortran's version of MPI_CONVERSION_FN_NULL, and some helpful
|
|
* macros for testing whether an argument passed to a Fortran MPI API
|
|
* function is that sentinel value or not.
|
|
*/
|
|
|
|
#ifndef OMPI_F77_DATAREP_H
|
|
#define OMPI_F77_DATAREP_H
|
|
|
|
#include "ompi_config.h"
|
|
|
|
#include "mpi.h"
|
|
|
|
BEGIN_C_DECLS
|
|
|
|
/**
|
|
* Function typedef for the conversion function pointer in
|
|
* MPI_REGISTER_DATAREP */
|
|
typedef void (ompi_mpi2_fortran_datarep_conversion_fn_t)
|
|
(char *userbuf, MPI_Fint *datatype, MPI_Fint *count, char *filebuf,
|
|
MPI_Offset *position, MPI_Aint *extra_state, MPI_Fint *ierr);
|
|
|
|
/**
|
|
* Function typedef for the extent function pointer in
|
|
* MPI_REGISTER_DATAREP */
|
|
typedef void (ompi_mpi2_fortran_datarep_extent_fn_t)
|
|
(MPI_Fint *datatype, MPI_Aint *extent, MPI_Aint *extra_state,
|
|
MPI_Fint *ierr);
|
|
|
|
/**
|
|
* Macro for declaring each of the 5 back-end Fortran functions for
|
|
* MPI_CONVERSION_FN_NULL. We need the 4 fortran compiler convetions
|
|
* and 1 for the "real" back-end function (even though these functions
|
|
* are never invoked -- they're only used as sentinel values -- it's
|
|
* simpler to use the same kind of code structure that we use for the
|
|
* Fortran MPI API bindings and other callback functions).
|
|
*/
|
|
#define OMPI_DATAREP_FORTRAN_DECLARE(lower_name, upper_name, args) \
|
|
OMPI_DECLSPEC void lower_name##_f args; \
|
|
OMPI_DECLSPEC void lower_name args; \
|
|
OMPI_DECLSPEC void lower_name##_ args; \
|
|
OMPI_DECLSPEC void lower_name##__ args; \
|
|
OMPI_DECLSPEC void upper_name args;
|
|
|
|
/*
|
|
* Declare the 5 functions.
|
|
*/
|
|
OMPI_DATAREP_FORTRAN_DECLARE(mpi_conversion_fn_null, MPI_CONVERSION_FN_NULL, (char *userbuf, MPI_Fint *datatype, MPI_Fint *count, char *filebuf, MPI_Offset *position, MPI_Aint *extra_state, MPI_Fint *ierr))
|
|
|
|
/* Be social and remove this private macro from the global header file
|
|
space */
|
|
#undef OMPI_DATAREP_FORTRAN_DECLARE
|
|
|
|
/**
|
|
* Declare the test macro in all of its forms. This macro provides a
|
|
* convenient way to check whether an argument is the sentinel value
|
|
* MPI_CONVERSION_FN_NULL.
|
|
*/
|
|
#if OPAL_HAVE_WEAK_SYMBOLS
|
|
#define OMPI_IS_FORTRAN_CONVERSION_FN_NULL(addr) \
|
|
(MPI_CONVERSION_FN_NULL == addr || \
|
|
mpi_conversion_fn_null == addr || \
|
|
mpi_conversion_fn_null_ == addr || \
|
|
mpi_conversion_fn_null__ == addr)
|
|
#elif OMPI_F77_CAPS
|
|
#define OMPI_IS_FORTRAN_CONVERSION_FN_NULL(addr) \
|
|
(MPI_CONVERSION_FN_NULL == addr)
|
|
#elif OMPI_F77_PLAIN
|
|
#define OMPI_IS_FORTRAN_CONVERSION_FN_NULL(addr) \
|
|
(mpi_conversion_fn_null == addr)
|
|
#elif OMPI_F77_SINGLE_UNDERSCORE
|
|
#define OMPI_IS_FORTRAN_CONVERSION_FN_NULL(addr) \
|
|
(mpi_conversion_fn_null_ == addr)
|
|
#else
|
|
#define OMPI_IS_FORTRAN_CONVERSION_FN_NULL(addr) \
|
|
(mpi_conversion_fn_null__ == addr)
|
|
#endif
|
|
|
|
END_C_DECLS
|
|
|
|
#endif
|