
Adding the implementations of the functions that were removed from the MPI standard to the build list, regardless of the state of the OMPI_ENABLE_MPI1_COMPAT. According to the README, we want the OMPI_ENABLE_MPI1_COMPAT configure flag to control which MPI prototypes are exposed in mpi.h, NOT, which are built into the mpi library. Those will remain in the mpi library until a future major release (5.0?) NOTE: for the Fortran implementations, we instead define OMPI_OMIT_MPI1_COMPAT_DECLS to 0 instead of OMPI_ENABLE_MPI1_COMPAT to 1. I'm not sure why, but this seems to work correctly. Also changing the removed MPI_Errhandler_create implementation to use the non removed MPI_Comm_errhandler_function prototype (prototype remains unchanged from MPI_Comm_errhandler_fn) NOTE: This commit is *NOT* a cherry-pick from master, because on master, we are no longer building those symbols by default, but on v4.0.x we _ARE_ still building these symbols by default. This is because the v4.0.x branch is to remain backwards compatible with v3.0.x, while at the same time removing the "removed" symbols from mpi.h (unless the user configures with --enable-mpi1-compatibility) Signed-off-by: Geoffrey Paulsen <gpaulsen@us.ibm.com>
86 строки
3.1 KiB
C
86 строки
3.1 KiB
C
/*
|
|
* Copyright (c) 2004-2005 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) 2011-2012 Cisco Systems, Inc. All rights reserved.
|
|
* Copyright (c) 2015 Research Organization for Information Science
|
|
* and Technology (RIST). All rights reserved.
|
|
* Copyright (c) 2018 IBM Corporation. All rights reserved.
|
|
* $COPYRIGHT$
|
|
*
|
|
* Additional copyrights may follow
|
|
*
|
|
* $HEADER$
|
|
*/
|
|
|
|
#include "ompi_config.h"
|
|
|
|
#include "ompi/mpi/fortran/mpif-h/bindings.h"
|
|
|
|
#if OMPI_BUILD_MPI_PROFILING
|
|
#if OPAL_HAVE_WEAK_SYMBOLS
|
|
#pragma weak PMPI_ERRHANDLER_GET = ompi_errhandler_get_f
|
|
#pragma weak pmpi_errhandler_get = ompi_errhandler_get_f
|
|
#pragma weak pmpi_errhandler_get_ = ompi_errhandler_get_f
|
|
#pragma weak pmpi_errhandler_get__ = ompi_errhandler_get_f
|
|
|
|
#pragma weak PMPI_Errhandler_get_f = ompi_errhandler_get_f
|
|
#pragma weak PMPI_Errhandler_get_f08 = ompi_errhandler_get_f
|
|
#else
|
|
OMPI_GENERATE_F77_BINDINGS (PMPI_ERRHANDLER_GET,
|
|
pmpi_errhandler_get,
|
|
pmpi_errhandler_get_,
|
|
pmpi_errhandler_get__,
|
|
pompi_errhandler_get_f,
|
|
(MPI_Fint *comm, MPI_Fint *errhandler, MPI_Fint *ierr),
|
|
(comm, errhandler, ierr) )
|
|
#endif
|
|
#endif
|
|
|
|
#if OPAL_HAVE_WEAK_SYMBOLS
|
|
#pragma weak MPI_ERRHANDLER_GET = ompi_errhandler_get_f
|
|
#pragma weak mpi_errhandler_get = ompi_errhandler_get_f
|
|
#pragma weak mpi_errhandler_get_ = ompi_errhandler_get_f
|
|
#pragma weak mpi_errhandler_get__ = ompi_errhandler_get_f
|
|
|
|
#pragma weak MPI_Errhandler_get_f = ompi_errhandler_get_f
|
|
#pragma weak MPI_Errhandler_get_f08 = ompi_errhandler_get_f
|
|
#else
|
|
#if ! OMPI_BUILD_MPI_PROFILING
|
|
OMPI_GENERATE_F77_BINDINGS (MPI_ERRHANDLER_GET,
|
|
mpi_errhandler_get,
|
|
mpi_errhandler_get_,
|
|
mpi_errhandler_get__,
|
|
ompi_errhandler_get_f,
|
|
(MPI_Fint *comm, MPI_Fint *errhandler, MPI_Fint *ierr),
|
|
(comm, errhandler, ierr) )
|
|
#else
|
|
#define ompi_errhandler_get_f pompi_errhandler_get_f
|
|
#endif
|
|
#endif
|
|
|
|
|
|
void ompi_errhandler_get_f(MPI_Fint *comm, MPI_Fint *errhandler, MPI_Fint *ierr)
|
|
{
|
|
int c_ierr;
|
|
MPI_Comm c_comm;
|
|
MPI_Errhandler c_errhandler;
|
|
|
|
c_comm = PMPI_Comm_f2c(*comm);
|
|
|
|
c_ierr = PMPI_Errhandler_get(c_comm, &c_errhandler);
|
|
if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr);
|
|
|
|
if (MPI_SUCCESS == c_ierr) {
|
|
*errhandler = PMPI_Errhandler_c2f(c_errhandler);
|
|
}
|
|
}
|
|
|