Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-17 09:55:50

0001 /* ompi/include/mpi.h.  Generated from mpi.h.in by configure.  */
0002 /*
0003  * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
0004  *                         University Research and Technology
0005  *                         Corporation.  All rights reserved.
0006  * Copyright (c) 2004-2021 The University of Tennessee and The University
0007  *                         of Tennessee Research Foundation.  All rights
0008  *                         reserved.
0009  * Copyright (c) 2004-2007 High Performance Computing Center Stuttgart,
0010  *                         University of Stuttgart.  All rights reserved.
0011  * Copyright (c) 2004-2005 The Regents of the University of California.
0012  *                         All rights reserved.
0013  * Copyright (c) 2007-2022 Cisco Systems, Inc.  All rights reserved
0014  * Copyright (c) 2008-2009 Sun Microsystems, Inc.  All rights reserved.
0015  * Copyright (c) 2009-2012 Oak Rigde National Laboratory.  All rights reserved.
0016  * Copyright (c) 2011-2020 Sandia National Laboratories. All rights reserved.
0017  * Copyright (c) 2012-2018 Los Alamos National Security, LLC. All rights
0018  *                         reserved.
0019  * Copyright (c) 2011-2013 INRIA.  All rights reserved.
0020  * Copyright (c) 2015      University of Houston. All rights reserved.
0021  * Copyright (c) 2015-2023 Research Organization for Information Science
0022  *                         and Technology (RIST).  All rights reserved.
0023  * Copyright (c) 2017-2022 IBM Corporation.  All rights reserved.
0024  * Copyright (c) 2018      FUJITSU LIMITED.  All rights reserved.
0025  * Copyright (c) 2021-2022 Google, LLC. All rights reserved.
0026  * Copyright (c) 2021-2022 Amazon.com, Inc. or its affiliates.  All Rights
0027  *                         reserved.
0028  * Copyright (c) 2021      Bull S.A.S. All rights reserved.
0029  * Copyright (c) 2018      Triad National Security, LLC. All rights
0030  * Copyright (c) 2018-2022 Triad National Security, LLC. All rights
0031  *                         reserved.
0032  * $COPYRIGHT$
0033  *
0034  * Additional copyrights may follow
0035  *
0036  * $HEADER$
0037  */
0038 
0039 #ifndef OMPI_MPI_H
0040 #define OMPI_MPI_H
0041 
0042 /* The comment below (and the ending partner) are for building fat
0043    distributions on platforms that support it.  Please do not remove */
0044 
0045 /* @OMPI_BEGIN_CONFIGURE_SECTION@ */
0046 
0047 #ifndef OMPI_CONFIG_H
0048 
0049 /* Only include these if OMPI_CONFIG_H isn't defined (meaning if
0050    ompi_config.h hasn't already been included).  Otherwise, we'll
0051    duplicate all those symbols.  OMPI coding standards say that
0052    ompi_config.h must be included before all other files, so this
0053    should be good enough */
0054 
0055 /* The compiler id which OMPI was built with */
0056 #define OPAL_BUILD_PLATFORM_COMPILER_FAMILYID 1
0057 
0058 /* The compiler version which OMPI was built with */
0059 #define OPAL_BUILD_PLATFORM_COMPILER_VERSION 786944
0060 
0061 /* Define to 1 if you have the ANSI C header files. */
0062 #define OPAL_STDC_HEADERS 1
0063 
0064 /* Whether your compiler has __attribute__ deprecated or not */
0065 #define OPAL_HAVE_ATTRIBUTE_DEPRECATED 1
0066 
0067 /* Whether your compiler has __attribute__ deprecated with the optional argument */
0068 #define OPAL_HAVE_ATTRIBUTE_DEPRECATED_ARGUMENT 1
0069 
0070 /* Whether you compiler has __attribute__ error or not */
0071 #define OPAL_HAVE_ATTRIBUTE_ERROR 1
0072 
0073 /* Define to 1 if you have the <sys/time.h> header file. */
0074 #define OPAL_HAVE_SYS_TIME_H 1
0075 
0076 /* Define to 1 if you have the <sys/synch.h> header file. */
0077 /* #undef OPAL_HAVE_SYS_SYNCH_H */
0078 
0079 /* Define to 1 if the system has the type `long long'. */
0080 #define OPAL_HAVE_LONG_LONG 1
0081 
0082 /* The size of a `bool', as computed by sizeof. */
0083 /* #undef OPAL_SIZEOF_BOOL */
0084 
0085 /* The size of a `int', as computed by sizeof. */
0086 /* #undef OPAL_SIZEOF_INT */
0087 
0088 /* The size of a `void*', as computed by sizeof. */
0089 /* #undef OPAL_SIZEOF_VOID_P */
0090 
0091 /* Maximum length of datarep string (default is 128) */
0092 #define OPAL_MAX_DATAREP_STRING 128
0093 
0094 /* Maximum length of error strings (default is 256) */
0095 #define OPAL_MAX_ERROR_STRING 256
0096 
0097 /* Maximum length of info keys (default is 36) */
0098 #define OPAL_MAX_INFO_KEY 36
0099 
0100 /* Maximum length of info vals (default is 256) */
0101 #define OPAL_MAX_INFO_VAL 256
0102 
0103 /* Maximum length of object names (default is 64) */
0104 #define OPAL_MAX_OBJECT_NAME 64
0105 
0106 /* Maximum length of port names (default is 1024) */
0107 #define OPAL_MAX_PORT_NAME 1024
0108 
0109 /* Maximum length of processor names (default is 256) */
0110 #define OPAL_MAX_PROCESSOR_NAME 256
0111 
0112 /* Maximum length of processor names (default is 1024) */
0113 #define OPAL_MAX_PSET_NAME_LEN 512
0114 
0115 /* Maximum length of from group tag (default is 256) */
0116 #define OPAL_MAX_STRINGTAG_LEN 1024
0117 
0118 /* The number or Fortran INTEGER in MPI Status */
0119 #define OMPI_FORTRAN_STATUS_SIZE 6
0120 
0121 /* Whether we have FORTRAN LOGICAL*1 or not */
0122 #define OMPI_HAVE_FORTRAN_LOGICAL1 1
0123 
0124 /* Whether we have FORTRAN LOGICAL*2 or not */
0125 #define OMPI_HAVE_FORTRAN_LOGICAL2 1
0126 
0127 /* Whether we have FORTRAN LOGICAL*4 or not */
0128 #define OMPI_HAVE_FORTRAN_LOGICAL4 1
0129 
0130 /* Whether we have FORTRAN LOGICAL*8 or not */
0131 #define OMPI_HAVE_FORTRAN_LOGICAL8 1
0132 
0133 /* Whether we have FORTRAN INTEGER*1 or not */
0134 #define OMPI_HAVE_FORTRAN_INTEGER1 1
0135 
0136 /* Whether we have FORTRAN INTEGER*16 or not */
0137 #define OMPI_HAVE_FORTRAN_INTEGER16 0
0138 
0139 /* Whether we have FORTRAN INTEGER*2 or not */
0140 #define OMPI_HAVE_FORTRAN_INTEGER2 1
0141 
0142 /* Whether we have FORTRAN INTEGER*4 or not */
0143 #define OMPI_HAVE_FORTRAN_INTEGER4 1
0144 
0145 /* Whether we have FORTRAN INTEGER*8 or not */
0146 #define OMPI_HAVE_FORTRAN_INTEGER8 1
0147 
0148 /* Whether we have FORTRAN REAL*16 or not */
0149 #define OMPI_HAVE_FORTRAN_REAL16 1
0150 
0151 /* Whether we have FORTRAN REAL*2 or not */
0152 #define OMPI_HAVE_FORTRAN_REAL2 0
0153 
0154 /* Whether we have FORTRAN REAL*4 or not */
0155 #define OMPI_HAVE_FORTRAN_REAL4 1
0156 
0157 /* Whether we have FORTRAN REAL*8 or not */
0158 #define OMPI_HAVE_FORTRAN_REAL8 1
0159 
0160 /* Whether in include MPI-1 compatibility */
0161 #define OMPI_ENABLE_MPI1_COMPAT 1
0162 
0163 /* Whether we have float _Complex  or not */
0164 #define HAVE_FLOAT__COMPLEX 1
0165 
0166 /* Whether we have double _Complex  or not */
0167 #define HAVE_DOUBLE__COMPLEX 1
0168 
0169 /* Whether we have long double _Complex  or not */
0170 #define HAVE_LONG_DOUBLE__COMPLEX 1
0171 
0172 /* Type of MPI_Aint */
0173 #define OMPI_MPI_AINT_TYPE ptrdiff_t
0174 
0175 /* Type of MPI_Offset */
0176 #define OMPI_MPI_OFFSET_TYPE long long
0177 
0178 /* MPI datatype corresponding to MPI_Offset */
0179 #define OMPI_OFFSET_DATATYPE MPI_LONG_LONG
0180 
0181 /* Size of the MPI_Offset corresponding type */
0182 #define OMPI_MPI_OFFSET_SIZE 8
0183 
0184 /* Type of MPI_Count */
0185 #define OMPI_MPI_COUNT_TYPE long long
0186 
0187 /* type to use for ptrdiff_t, if it does not exist, set to ptrdiff_t if it does exist */
0188 /* #undef ptrdiff_t */
0189 
0190 /* Whether OMPI was built with parameter checking or not */
0191 #define OMPI_PARAM_CHECK 1
0192 
0193 /* Enable warnings in wrong usage (e.g. deprecated) in user-level code */
0194 #ifndef OMPI_WANT_MPI_INTERFACE_WARNING
0195 #define OMPI_WANT_MPI_INTERFACE_WARNING 1
0196 #endif
0197 
0198 /* Major, minor, and release version of Open MPI */
0199 #define OMPI_MAJOR_VERSION 5
0200 #define OMPI_MINOR_VERSION 0
0201 #define OMPI_RELEASE_VERSION 5
0202 
0203 /*
0204  * MPI version
0205  */
0206 #define MPI_VERSION 3
0207 #define MPI_SUBVERSION 1
0208 
0209 /* A  type that allows us to have sentinel type values that are still
0210    valid */
0211 #define ompi_fortran_bogus_type_t int
0212 
0213 /* C type corresponding to FORTRAN INTEGER */
0214 #define ompi_fortran_integer_t int
0215 
0216 /* Whether C compiler supports -fvisibility */
0217 #define OPAL_C_HAVE_VISIBILITY 1
0218 
0219 #ifndef OMPI_DECLSPEC
0220 #  if defined(WIN32) || defined(_WIN32)
0221 #    if defined(OMPI_IMPORTS)
0222 #      define OMPI_DECLSPEC        __declspec(dllimport)
0223 #    else
0224 #      define OMPI_DECLSPEC
0225 #    endif  /* defined(OMPI_IMPORTS) */
0226 #  else
0227 #    if OPAL_C_HAVE_VISIBILITY == 1
0228 #       define OMPI_DECLSPEC __attribute__((visibility("default")))
0229 #    else
0230 #       define OMPI_DECLSPEC
0231 #    endif
0232 #  endif
0233 #endif
0234 
0235 #ifndef MPI_Fint
0236 /* MPI_Fint is the same as ompi_fortran_INTEGER_t */
0237 #define MPI_Fint ompi_fortran_integer_t
0238 #endif
0239 
0240 #endif /* #ifndef OMPI_CONFIG_H */
0241 
0242 /* @OMPI_END_CONFIGURE_SECTION@ */
0243 
0244 /* include for ptrdiff_t */
0245 #ifdef OPAL_STDC_HEADERS
0246 #include <stddef.h>
0247 #endif
0248 
0249 #ifndef OMPI_BUILDING
0250 #define OMPI_BUILDING 0
0251 #endif
0252 
0253 
0254 /*
0255  * Just in case you need it.  :-)
0256  */
0257 #define OPEN_MPI 1
0258 
0259 
0260 /*
0261  * Do we want MPI interface deprecated function warnings?  This is
0262  * only relevant if we're not building Open MPI (i.e., we're compiling an
0263  * MPI application).
0264  */
0265 #if !OMPI_BUILDING
0266      /*
0267       * Figure out which compiler is being invoked (in order to compare if
0268       * it was different than what OMPI was built with).  Do some preprocessor
0269       * hacks to eliminate warnings in the portable_platform.h file.
0270       */
0271 #    ifndef SIZEOF_VOID_P
0272 #    define CLEANUP_SIZEOF_VOID_P 1
0273 #    define SIZEOF_VOID_P 8
0274 #    else
0275 #    define CLEANUP_SIZEOF_VOID_P 0
0276 #    endif
0277 
0278 #    ifndef _PORTABLE_PLATFORM_H
0279 #    define _PORTABLE_PLATFORM_H 0
0280 #    endif
0281 #    ifndef PLATFORM_HEADER_VERSION
0282 #    define PLATFORM_HEADER_VERSION 0
0283 #    endif
0284 
0285 #    include "mpi_portable_platform.h"
0286 
0287 #if CLEANUP_SIZEOF_VOID_P
0288 #define SIZEOF_VOID_P 8
0289 #endif
0290 
0291      /*
0292       * If we're currently using the same compiler that was used to
0293       * build Open MPI, enable compile-time warning of user-level code
0294       * (e.g. usage of deprecated functions).
0295       */
0296 #    if (OPAL_BUILD_PLATFORM_COMPILER_FAMILYID == PLATFORM_COMPILER_FAMILYID) && \
0297         (OPAL_BUILD_PLATFORM_COMPILER_VERSION == PLATFORM_COMPILER_VERSION)
0298 
0299 #        if OMPI_WANT_MPI_INTERFACE_WARNING
0300 #            if OPAL_HAVE_ATTRIBUTE_DEPRECATED
0301 #                if OPAL_HAVE_ATTRIBUTE_DEPRECATED_ARGUMENT
0302 #                    define __mpi_interface_deprecated__(msg) __attribute__((__deprecated__(msg)))
0303 #                else
0304 #                    define __mpi_interface_deprecated__(msg) __attribute__((__deprecated__))
0305 #                endif
0306 #            endif
0307 #        endif
0308 
0309          /* For MPI removed APIs, there is no generally portable way to cause
0310           * the C compiler to error with a nice message, on the _usage_ of
0311           * one of these symbols.  We've gone with tiered approach:
0312           *
0313           * If the user configured with --enable-mpi1-compatibility,
0314           * just emit a compiletime warning (via the deprecation function
0315           * attribute) that they're using an MPI1 removed function.
0316           *
0317           * Otherwise, we'd like to issue a fatal error directing the
0318           * user that they've used an MPI1 removed function.  If the
0319           * user's compiler supports C11 _Static_assert() or
0320           * C++11 static_assert(), we #define the MPI routines to
0321           * instead be a call to an assert with an appropriate message
0322           * suggesting the new MPI3 equivalent.
0323           *
0324           * Otherwise, if the user's compiler supports the error function
0325           * attribute, define the MPI routines with that error attribute.
0326           * This is supported by most modern GNU compilers.
0327           *
0328           * Finally if the compiler doesn't support any of those, just
0329           * Don't declare those MPI routines at all in mpi.h
0330           *
0331           * Don't do MACRO magic for building Profiling library as it
0332           * interferes with the above.
0333           */
0334 #        if defined(OMPI_OMIT_MPI1_COMPAT_DECLS)
0335              /* The user set OMPI_OMIT_MPI1_COMPAT_DECLS, do what he commands */
0336 #        elif OMPI_ENABLE_MPI1_COMPAT
0337 #            define OMPI_OMIT_MPI1_COMPAT_DECLS 0
0338 #            define OMPI_REMOVED_USE_STATIC_ASSERT 0
0339 #            define __mpi_interface_removed__(func, newfunc) __mpi_interface_deprecated__(#func " was removed in MPI-3.0.  Use " #newfunc " instead.  continuing...")
0340 #        elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)
0341              /* This is the C11 (or later) case, which uses
0342                 _Static_assert() */
0343 #            define OMPI_OMIT_MPI1_COMPAT_DECLS 1
0344 #            define OMPI_REMOVED_USE_STATIC_ASSERT 1
0345 /* This macro definition may show up in compiler output.  So we both
0346  * outdent it back to column 0 and give it a user-friendly name to
0347  * help users grok what we are trying to tell them here.
0348  */
0349 #define THIS_SYMBOL_WAS_REMOVED_IN_MPI30(symbol, new_symbol) 0; _Static_assert(0, #symbol " was removed in MPI-3.0.  Use " #new_symbol " instead.")
0350 #define THIS_FUNCTION_WAS_REMOVED_IN_MPI30(func, newfunc) _Static_assert(0, #func " was removed in MPI-3.0.  Use " #newfunc " instead.")
0351 #        elif defined(__cplusplus) && (__cplusplus >= 201103L)
0352              /* This is the C++11 (or later) case, which uses
0353                 static_assert() */
0354 #            define OMPI_OMIT_MPI1_COMPAT_DECLS 1
0355 #            define OMPI_REMOVED_USE_STATIC_ASSERT 1
0356 /* This macro definition may show up in compiler output.  So we both
0357  * outdent it back to column 0 and give it a user-friendly name to
0358  * help users grok what we are trying to tell them here.
0359  */
0360 #define THIS_SYMBOL_WAS_REMOVED_IN_MPI30(symbol, new_symbol) 0; static_assert(0, #symbol " was removed in MPI-3.0.  Use " #new_symbol " instead.")
0361 #define THIS_FUNCTION_WAS_REMOVED_IN_MPI30(func, newfunc) static_assert(0, #func " was removed in MPI-3.0.  Use " #newfunc " instead.")
0362 #        elif OPAL_HAVE_ATTRIBUTE_ERROR
0363 #            define OMPI_OMIT_MPI1_COMPAT_DECLS 0
0364 #            define OMPI_REMOVED_USE_STATIC_ASSERT 0
0365 #            define __mpi_interface_removed__(func, newfunc) __attribute__((__error__(#func " was removed in MPI-3.0.  Use " #newfunc " instead.")))
0366 #        else
0367 #            define OMPI_OMIT_MPI1_COMPAT_DECLS 1
0368 #            define OMPI_REMOVED_USE_STATIC_ASSERT 0
0369 #        endif
0370 #    endif
0371 #endif
0372 
0373 /*
0374  * If we didn't define __mpi_interface_deprecated__ above, then we
0375  * don't want it, so define it to empty (can't use #undef in the logic
0376  * above because autoconf will comment it out).
0377  */
0378 #if !defined(__mpi_interface_deprecated__)
0379 #    define __mpi_interface_deprecated__(msg)
0380 #endif
0381 
0382 #if !defined(__mpi_interface_removed__)
0383 #    define __mpi_interface_removed__(A,B)
0384 #endif
0385 
0386 #if !defined(THIS_SYMBOL_WAS_REMOVED_IN_MPI30)
0387 #    define THIS_SYMBOL_WAS_REMOVED_IN_MPI30(symbol, newsymbol)
0388 #endif
0389 #if !defined(THIS_FUNCTION_WAS_REMOVED_IN_MPI30)
0390 #    define THIS_FUNCTION_WAS_REMOVED_IN_MPI30(func, newfunc)
0391 #endif
0392 
0393 #if !defined(OMPI_REMOVED_USE_STATIC_ASSERT)
0394 #    define OMPI_REMOVED_USE_STATIC_ASSERT 0
0395 #endif
0396 
0397 #if !defined(OMPI_OMIT_MPI1_COMPAT_DECLS)
0398 #    define OMPI_OMIT_MPI1_COMPAT_DECLS (!(OMPI_ENABLE_MPI1_COMPAT || OMPI_BUILDING))
0399 #endif
0400 
0401 /*
0402  * To accommodate programs written for MPI implementations that use a
0403  * straight ROMIO import
0404  */
0405 #if !OMPI_BUILDING
0406 #define MPIO_Request MPI_Request
0407 #define MPIO_Test MPI_Test
0408 #define MPIO_Wait MPI_Wait
0409 #endif
0410 
0411 /*
0412  * When initializing global pointers to Open MPI internally-defined
0413  * structs, some compilers warn about type-punning to incomplete
0414  * types.  Therefore, when full struct definitions are unavailable
0415  * (when not building Open MPI), cast to an opaque (void *) pointer to
0416  * disable any strict-aliasing optimizations.  Don't cast to (void *)
0417  * when building Open MPI so that we actually get the benefit of type
0418  * checking (because we *do* have the full type definitions available
0419  * when building OMPI).
0420  */
0421 #if !OMPI_BUILDING
0422 #if defined(c_plusplus) || defined(__cplusplus)
0423 #define OMPI_PREDEFINED_GLOBAL(type, global) (static_cast<type> (static_cast<void *> (&(global))))
0424 #else
0425 #define OMPI_PREDEFINED_GLOBAL(type, global) ((type) ((void *) &(global)))
0426 #endif
0427 #else
0428 #define OMPI_PREDEFINED_GLOBAL(type, global) ((type) &(global))
0429 #endif
0430 
0431 #if defined(c_plusplus) || defined(__cplusplus)
0432 extern "C" {
0433 #endif
0434 
0435 /*
0436  * Typedefs
0437  */
0438 
0439 typedef OMPI_MPI_AINT_TYPE MPI_Aint;
0440 typedef OMPI_MPI_OFFSET_TYPE MPI_Offset;
0441 typedef OMPI_MPI_COUNT_TYPE MPI_Count;
0442 typedef struct ompi_communicator_t *MPI_Comm;
0443 typedef struct ompi_datatype_t *MPI_Datatype;
0444 typedef struct ompi_errhandler_t *MPI_Errhandler;
0445 typedef struct ompi_file_t *MPI_File;
0446 typedef struct ompi_group_t *MPI_Group;
0447 typedef struct ompi_info_t *MPI_Info;
0448 typedef struct ompi_op_t *MPI_Op;
0449 typedef struct ompi_request_t *MPI_Request;
0450 typedef struct ompi_message_t *MPI_Message;
0451 typedef struct ompi_status_public_t MPI_Status;
0452 typedef struct ompi_f08_status_public_t MPI_F08_status;
0453 typedef struct ompi_win_t *MPI_Win;
0454 typedef struct mca_base_var_enum_t *MPI_T_enum;
0455 typedef struct ompi_mpit_cvar_handle_t *MPI_T_cvar_handle;
0456 typedef struct mca_base_pvar_handle_t *MPI_T_pvar_handle;
0457 typedef struct mca_base_pvar_session_t *MPI_T_pvar_session;
0458 typedef struct ompi_instance_t *MPI_Session;
0459 
0460 /*
0461  * MPI_Status
0462  */
0463 struct ompi_status_public_t {
0464     /* These fields are publicly defined in the MPI specification.
0465        User applications may freely read from these fields. */
0466     int MPI_SOURCE;
0467     int MPI_TAG;
0468     int MPI_ERROR;
0469     /* The following two fields are internal to the Open MPI
0470        implementation and should not be accessed by MPI applications.
0471        They are subject to change at any time.  These are not the
0472        droids you're looking for. */
0473     int _cancelled;
0474     size_t _ucount;
0475 };
0476 typedef struct ompi_status_public_t ompi_status_public_t;
0477 
0478 /*
0479  * MPI_F08_status
0480  */
0481 struct ompi_f08_status_public_t {
0482     /* These fields are publicly defined in the MPI specification.
0483        User applications may freely read from these fields. */
0484     MPI_Fint MPI_SOURCE;
0485     MPI_Fint MPI_TAG;
0486     MPI_Fint MPI_ERROR;
0487     MPI_Fint internal[OMPI_FORTRAN_STATUS_SIZE - 3];
0488 };
0489 typedef struct ompi_f08_status_public_t ompi_f08_status_public_t;
0490 
0491 /*
0492  * User typedefs
0493  */
0494 typedef int (MPI_Datarep_extent_function)(MPI_Datatype, MPI_Aint *, void *);
0495 typedef int (MPI_Datarep_conversion_function)(void *, MPI_Datatype,
0496                                               int, void *, MPI_Offset, void *);
0497 typedef void (MPI_Comm_errhandler_function)(MPI_Comm *, int *, ...);
0498 typedef void (MPI_Session_errhandler_function) (MPI_Session *, int *, ...);
0499 
0500     /* This is a little hackish, but errhandler.h needs space for a
0501        MPI_File_errhandler_function.  While it could just be removed, this
0502        allows us to maintain a stable ABI within OMPI, at least for
0503        apps that don't use MPI I/O. */
0504 typedef void (ompi_file_errhandler_function)(MPI_File *, int *, ...);
0505 typedef void (MPI_Win_errhandler_function)(MPI_Win *, int *, ...);
0506 typedef void (MPI_User_function)(void *, void *, int *, MPI_Datatype *);
0507 typedef int (MPI_Comm_copy_attr_function)(MPI_Comm, int, void *,
0508                                             void *, void *, int *);
0509 typedef int (MPI_Comm_delete_attr_function)(MPI_Comm, int, void *, void *);
0510 typedef int (MPI_Type_copy_attr_function)(MPI_Datatype, int, void *,
0511                                             void *, void *, int *);
0512 typedef int (MPI_Type_delete_attr_function)(MPI_Datatype, int,
0513                                               void *, void *);
0514 typedef int (MPI_Win_copy_attr_function)(MPI_Win, int, void *,
0515                                            void *, void *, int *);
0516 typedef int (MPI_Win_delete_attr_function)(MPI_Win, int, void *, void *);
0517 typedef int (MPI_Grequest_query_function)(void *, MPI_Status *);
0518 typedef int (MPI_Grequest_free_function)(void *);
0519 typedef int (MPI_Grequest_cancel_function)(void *, int);
0520 
0521 /*
0522  * Deprecated typedefs.  Usage is discouraged, as these may be deleted
0523  * in future versions of the MPI Standard.
0524  */
0525 typedef MPI_Comm_errhandler_function MPI_Comm_errhandler_fn
0526         __mpi_interface_deprecated__("MPI_Comm_errhandler_fn was deprecated in MPI-2.2; use MPI_Comm_errhandler_function instead");
0527 typedef ompi_file_errhandler_function MPI_File_errhandler_fn
0528         __mpi_interface_deprecated__("MPI_File_errhandler_fn was deprecated in MPI-2.2; use MPI_File_errhandler_function instead");
0529 typedef ompi_file_errhandler_function MPI_File_errhandler_function;
0530 typedef MPI_Win_errhandler_function MPI_Win_errhandler_fn
0531         __mpi_interface_deprecated__("MPI_Win_errhandler_fn was deprecated in MPI-2.2; use MPI_Win_errhandler_function instead");
0532 
0533 
0534 /*
0535  * Miscellaneous constants
0536  *
0537  * NOTE: Many of the integer constants below *also* appear in
0538  * ompi/include/mpif-values.pl.  If you change any of these integer
0539  * values below, make sure to also change the corresponding values in
0540  * mpif-values.pl.
0541  */
0542 #define MPI_ANY_SOURCE         -1                      /* match any source rank */
0543 #define MPI_PROC_NULL          -2                      /* rank of null process */
0544 #define MPI_ROOT               -4                      /* special value for intercomms */
0545 #define MPI_ANY_TAG            -1                      /* match any message tag */
0546 #define MPI_MAX_PROCESSOR_NAME OPAL_MAX_PROCESSOR_NAME /* max proc. name length */
0547 #define MPI_MAX_ERROR_STRING   OPAL_MAX_ERROR_STRING   /* max error message length */
0548 #define MPI_MAX_OBJECT_NAME    OPAL_MAX_OBJECT_NAME    /* max object name length */
0549 #define MPI_MAX_LIBRARY_VERSION_STRING 256             /* max length of library version string */
0550 #define MPI_UNDEFINED          -32766                  /* undefined stuff */
0551 #define MPI_DIST_GRAPH         3                       /* dist graph topology */
0552 #define MPI_CART               1                       /* cartesian topology */
0553 #define MPI_GRAPH              2                       /* graph topology */
0554 #define MPI_KEYVAL_INVALID     -1                      /* invalid key value */
0555 
0556 /*
0557  * More constants
0558  */
0559 #define MPI_UNWEIGHTED           ((int *) 2)           /* unweighted graph */
0560 #define MPI_WEIGHTS_EMPTY        ((int *) 3)           /* empty weights */
0561 #define MPI_BOTTOM               ((void *) 0)          /* base reference address */
0562 #define MPI_IN_PLACE             ((void *) 1)          /* in place buffer */
0563 #define MPI_BSEND_OVERHEAD       128                   /* size of bsend header + ptr */
0564 #define MPI_MAX_INFO_KEY         OPAL_MAX_INFO_KEY     /* max info key length */
0565 #define MPI_MAX_INFO_VAL         OPAL_MAX_INFO_VAL     /* max info value length */
0566 #define MPI_ARGV_NULL            ((char **) 0)         /* NULL argument vector */
0567 #define MPI_ARGVS_NULL           ((char ***) 0)        /* NULL argument vectors */
0568 #define MPI_ERRCODES_IGNORE      ((int *) 0)           /* don't return error codes */
0569 #define MPI_MAX_PORT_NAME        OPAL_MAX_PORT_NAME    /* max port name length */
0570 #define MPI_ORDER_C              0                     /* C row major order */
0571 #define MPI_ORDER_FORTRAN        1                     /* Fortran column major order */
0572 #define MPI_DISTRIBUTE_BLOCK     0                     /* block distribution */
0573 #define MPI_DISTRIBUTE_CYCLIC    1                     /* cyclic distribution */
0574 #define MPI_DISTRIBUTE_NONE      2                     /* not distributed */
0575 #define MPI_DISTRIBUTE_DFLT_DARG (-1)                  /* default distribution arg */
0576 #define MPI_MAX_PSET_NAME_LEN    OPAL_MAX_PSET_NAME_LEN /* max pset name len */
0577 #define MPI_MAX_STRINGTAG_LEN    OPAL_MAX_STRINGTAG_LEN /* max length of string arg to comm from group funcs*/
0578 
0579 /*
0580  * Constants for C code to access elements in Fortran MPI status array.
0581  *
0582  * NOTE: The MPI_F_SOURCE, MPI_F_TAG, MPI_F_ERROR are intentionally 1
0583  * smaller than their Fortran equivalents in mpif-values.pl (because C
0584  * is 0-indexed and Fortran is 1-indexed).
0585  */
0586 #define MPI_F_STATUS_SIZE OMPI_FORTRAN_STATUS_SIZE    /* Size of Fortran MPI status array */
0587 #define MPI_F_SOURCE      0                           /* Index for MPI_SOURCE */
0588 #define MPI_F_TAG         1                           /* Index for MPI_TAG */
0589 #define MPI_F_ERROR       2                           /* Index for MPI_ERROR */
0590 
0591 /*
0592  * Since these values are arbitrary to Open MPI, we might as well make
0593  * them the same as ROMIO for ease of mapping.  These values taken
0594  * from ROMIO's mpio.h file.
0595  */
0596 #define MPI_MODE_CREATE              1  /* ADIO_CREATE */
0597 #define MPI_MODE_RDONLY              2  /* ADIO_RDONLY */
0598 #define MPI_MODE_WRONLY              4  /* ADIO_WRONLY  */
0599 #define MPI_MODE_RDWR                8  /* ADIO_RDWR  */
0600 #define MPI_MODE_DELETE_ON_CLOSE    16  /* ADIO_DELETE_ON_CLOSE */
0601 #define MPI_MODE_UNIQUE_OPEN        32  /* ADIO_UNIQUE_OPEN */
0602 #define MPI_MODE_EXCL               64  /* ADIO_EXCL */
0603 #define MPI_MODE_APPEND            128  /* ADIO_APPEND */
0604 #define MPI_MODE_SEQUENTIAL        256  /* ADIO_SEQUENTIAL */
0605 
0606 #define MPI_DISPLACEMENT_CURRENT   -54278278
0607 
0608 #define MPI_SEEK_SET               600
0609 #define MPI_SEEK_CUR               602
0610 #define MPI_SEEK_END               604
0611 
0612 /* Max data representation length */
0613 #define MPI_MAX_DATAREP_STRING OPAL_MAX_DATAREP_STRING
0614 
0615 /*
0616  * MPI-2 One-Sided Communications asserts
0617  */
0618 #define MPI_MODE_NOCHECK             1
0619 #define MPI_MODE_NOPRECEDE           2
0620 #define MPI_MODE_NOPUT               4
0621 #define MPI_MODE_NOSTORE             8
0622 #define MPI_MODE_NOSUCCEED          16
0623 
0624 #define MPI_LOCK_EXCLUSIVE           1
0625 #define MPI_LOCK_SHARED              2
0626 
0627 #define MPI_WIN_FLAVOR_CREATE        1
0628 #define MPI_WIN_FLAVOR_ALLOCATE      2
0629 #define MPI_WIN_FLAVOR_DYNAMIC       3
0630 #define MPI_WIN_FLAVOR_SHARED        4
0631 
0632 #define MPI_WIN_UNIFIED              0
0633 #define MPI_WIN_SEPARATE             1
0634 
0635 /*
0636  * Predefined attribute keyvals
0637  *
0638  * DO NOT CHANGE THE ORDER WITHOUT ALSO CHANGING THE ORDER IN
0639  * ompi/attribute/attribute_predefined.c and mpif-constants.h (which
0640  * is included by mpif.h.in).
0641  */
0642 enum {
0643     /* MPI-1 */
0644     MPI_TAG_UB,
0645     MPI_HOST,
0646     MPI_IO,
0647     MPI_WTIME_IS_GLOBAL,
0648 
0649     /* MPI-2 */
0650     MPI_APPNUM,
0651     MPI_LASTUSEDCODE,
0652     MPI_UNIVERSE_SIZE,
0653     MPI_WIN_BASE,
0654     MPI_WIN_SIZE,
0655     MPI_WIN_DISP_UNIT,
0656     MPI_WIN_CREATE_FLAVOR,
0657     MPI_WIN_MODEL,
0658 
0659     /* MPI-4 */
0660     MPI_FT, /* used by OPAL_ENABLE_FT_MPI */
0661     MPI_ATTR_PREDEFINED_KEY_MAX,
0662 };
0663 
0664 /*
0665  * Error classes and codes
0666  * Do not change the values of these without also modifying mpif.h.in.
0667  */
0668 #define MPI_SUCCESS                   0
0669 #define MPI_ERR_BUFFER                1
0670 #define MPI_ERR_COUNT                 2
0671 #define MPI_ERR_TYPE                  3
0672 #define MPI_ERR_TAG                   4
0673 #define MPI_ERR_COMM                  5
0674 #define MPI_ERR_RANK                  6
0675 #define MPI_ERR_REQUEST               7
0676 #define MPI_ERR_ROOT                  8
0677 #define MPI_ERR_GROUP                 9
0678 #define MPI_ERR_OP                    10
0679 #define MPI_ERR_TOPOLOGY              11
0680 #define MPI_ERR_DIMS                  12
0681 #define MPI_ERR_ARG                   13
0682 #define MPI_ERR_UNKNOWN               14
0683 #define MPI_ERR_TRUNCATE              15
0684 #define MPI_ERR_OTHER                 16
0685 #define MPI_ERR_INTERN                17
0686 #define MPI_ERR_IN_STATUS             18
0687 #define MPI_ERR_PENDING               19
0688 #define MPI_ERR_ACCESS                20
0689 #define MPI_ERR_AMODE                 21
0690 #define MPI_ERR_ASSERT                22
0691 #define MPI_ERR_BAD_FILE              23
0692 #define MPI_ERR_BASE                  24
0693 #define MPI_ERR_CONVERSION            25
0694 #define MPI_ERR_DISP                  26
0695 #define MPI_ERR_DUP_DATAREP           27
0696 #define MPI_ERR_FILE_EXISTS           28
0697 #define MPI_ERR_FILE_IN_USE           29
0698 #define MPI_ERR_FILE                  30
0699 #define MPI_ERR_INFO_KEY              31
0700 #define MPI_ERR_INFO_NOKEY            32
0701 #define MPI_ERR_INFO_VALUE            33
0702 #define MPI_ERR_INFO                  34
0703 #define MPI_ERR_IO                    35
0704 #define MPI_ERR_KEYVAL                36
0705 #define MPI_ERR_LOCKTYPE              37
0706 #define MPI_ERR_NAME                  38
0707 #define MPI_ERR_NO_MEM                39
0708 #define MPI_ERR_NOT_SAME              40
0709 #define MPI_ERR_NO_SPACE              41
0710 #define MPI_ERR_NO_SUCH_FILE          42
0711 #define MPI_ERR_PORT                  43
0712 #define MPI_ERR_QUOTA                 44
0713 #define MPI_ERR_READ_ONLY             45
0714 #define MPI_ERR_RMA_CONFLICT          46
0715 #define MPI_ERR_RMA_SYNC              47
0716 #define MPI_ERR_SERVICE               48
0717 #define MPI_ERR_SIZE                  49
0718 #define MPI_ERR_SPAWN                 50
0719 #define MPI_ERR_UNSUPPORTED_DATAREP   51
0720 #define MPI_ERR_UNSUPPORTED_OPERATION 52
0721 #define MPI_ERR_WIN                   53
0722 
0723 #define MPI_T_ERR_MEMORY              54
0724 #define MPI_T_ERR_NOT_INITIALIZED     55
0725 #define MPI_T_ERR_CANNOT_INIT         56
0726 #define MPI_T_ERR_INVALID_INDEX       57
0727 #define MPI_T_ERR_INVALID_ITEM        58
0728 #define MPI_T_ERR_INVALID_HANDLE      59
0729 #define MPI_T_ERR_OUT_OF_HANDLES      60
0730 #define MPI_T_ERR_OUT_OF_SESSIONS     61
0731 #define MPI_T_ERR_INVALID_SESSION     62
0732 #define MPI_T_ERR_CVAR_SET_NOT_NOW    63
0733 #define MPI_T_ERR_CVAR_SET_NEVER      64
0734 #define MPI_T_ERR_PVAR_NO_STARTSTOP   65
0735 #define MPI_T_ERR_PVAR_NO_WRITE       66
0736 #define MPI_T_ERR_PVAR_NO_ATOMIC      67
0737 #define MPI_ERR_RMA_RANGE             68
0738 #define MPI_ERR_RMA_ATTACH            69
0739 #define MPI_ERR_RMA_FLAVOR            70
0740 #define MPI_ERR_RMA_SHARED            71
0741 #define MPI_T_ERR_INVALID             72
0742 #define MPI_T_ERR_INVALID_NAME        73
0743 #define MPI_ERR_PROC_ABORTED          74
0744 
0745 /* not #if conditional on OPAL_ENABLE_FT_MPI for ABI */
0746 #define MPI_ERR_PROC_FAILED           75
0747 #define MPI_ERR_PROC_FAILED_PENDING   76
0748 #define MPI_ERR_REVOKED               77
0749 #define MPI_ERR_SESSION               78
0750 #define MPI_ERR_VALUE_TOO_LARGE       79
0751 
0752 /* Per MPI-3 p349 47, MPI_ERR_LASTCODE must be >= the last predefined
0753    MPI_ERR_<foo> code. Set the last code to allow some room for adding
0754    error codes without breaking ABI. */
0755 #define MPI_ERR_LASTCODE              92
0756 
0757 /*
0758  * Comparison results.  Don't change the order of these, the group
0759  * comparison functions rely on it.
0760  * Do not change the order of these without also modifying
0761  * mpif-values.pl.
0762  */
0763 enum {
0764   MPI_IDENT,
0765   MPI_CONGRUENT,
0766   MPI_SIMILAR,
0767   MPI_UNEQUAL
0768 };
0769 
0770 /*
0771  * MPI_Init_thread constants
0772  * Do not change the order of these without also modifying
0773  * mpif-values.pl.
0774  */
0775 enum {
0776   MPI_THREAD_SINGLE,
0777   MPI_THREAD_FUNNELED,
0778   MPI_THREAD_SERIALIZED,
0779   MPI_THREAD_MULTIPLE
0780 };
0781 
0782 /*
0783  * Datatype combiners.
0784  * Do not change the order of these without also modifying
0785  * mpif-values.pl.
0786  */
0787 enum {
0788   MPI_COMBINER_NAMED,
0789   MPI_COMBINER_DUP,
0790   MPI_COMBINER_CONTIGUOUS,
0791   MPI_COMBINER_VECTOR,
0792 #if (!OMPI_OMIT_MPI1_COMPAT_DECLS)
0793   MPI_COMBINER_HVECTOR_INTEGER,
0794 #else
0795   OMPI_WAS_MPI_COMBINER_HVECTOR_INTEGER, /* preserve ABI compatibility */
0796 #endif
0797   MPI_COMBINER_HVECTOR,
0798   MPI_COMBINER_INDEXED,
0799 #if (!OMPI_OMIT_MPI1_COMPAT_DECLS)
0800   MPI_COMBINER_HINDEXED_INTEGER,
0801 #else
0802   OMPI_WAS_MPI_COMBINER_HINDEXED_INTEGER, /* preserve ABI compatibility */
0803 #endif
0804   MPI_COMBINER_HINDEXED,
0805   MPI_COMBINER_INDEXED_BLOCK,
0806 #if (!OMPI_OMIT_MPI1_COMPAT_DECLS)
0807   MPI_COMBINER_STRUCT_INTEGER,
0808 #else
0809   OMPI_WAS_MPI_COMBINER_STRUCT_INTEGER, /* preserve ABI compatibility */
0810 #endif
0811   MPI_COMBINER_STRUCT,
0812   MPI_COMBINER_SUBARRAY,
0813   MPI_COMBINER_DARRAY,
0814   MPI_COMBINER_F90_REAL,
0815   MPI_COMBINER_F90_COMPLEX,
0816   MPI_COMBINER_F90_INTEGER,
0817   MPI_COMBINER_RESIZED,
0818   MPI_COMBINER_HINDEXED_BLOCK
0819 };
0820 
0821 #if (OMPI_OMIT_MPI1_COMPAT_DECLS)
0822 /* If not building or configured --enable-mpi1-compatibility, then
0823  * we don't want these datatypes, instead we define MPI_COMBINER_*_INTEGER
0824  * to our Static Assert message if the compiler supports
0825  * that static assert with a nice message.
0826  */
0827 #    if (OMPI_REMOVED_USE_STATIC_ASSERT)
0828 #        define MPI_COMBINER_HVECTOR_INTEGER THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_COMBINER_HVECTOR_INTEGER, MPI_COMBINER_HVECTOR);
0829 #        define MPI_COMBINER_HINDEXED_INTEGER THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_COMBINER_HINDEXED_INTEGER, MPI_COMBINER_HINDEXED);
0830 #        define MPI_COMBINER_STRUCT_INTEGER THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_COMBINER_STRUCT_INTEGER, MPI_COMBINER_STRUCT);
0831 #    endif /* OMPI_REMOVED_USE_STATIC_ASSERT */
0832 #endif /* Removed datatypes */
0833 
0834 /*
0835  * Communicator split type constants.
0836  * Do not change the order of these without also modifying
0837  * mpif-values.pl.
0838  */
0839 enum {
0840   MPI_COMM_TYPE_SHARED,
0841   OMPI_COMM_TYPE_HWTHREAD,
0842   OMPI_COMM_TYPE_CORE,
0843   OMPI_COMM_TYPE_L1CACHE,
0844   OMPI_COMM_TYPE_L2CACHE,
0845   OMPI_COMM_TYPE_L3CACHE,
0846   OMPI_COMM_TYPE_SOCKET,
0847   OMPI_COMM_TYPE_NUMA,
0848   OMPI_COMM_TYPE_BOARD,
0849   OMPI_COMM_TYPE_HOST,
0850   OMPI_COMM_TYPE_CU,
0851   OMPI_COMM_TYPE_CLUSTER,
0852   MPI_COMM_TYPE_HW_UNGUIDED,
0853   MPI_COMM_TYPE_HW_GUIDED
0854 };
0855 #define OMPI_COMM_TYPE_NODE MPI_COMM_TYPE_SHARED
0856 
0857 /*
0858  * MPIT Verbosity Levels
0859  */
0860 enum {
0861   MPI_T_VERBOSITY_USER_BASIC,
0862   MPI_T_VERBOSITY_USER_DETAIL,
0863   MPI_T_VERBOSITY_USER_ALL,
0864   MPI_T_VERBOSITY_TUNER_BASIC,
0865   MPI_T_VERBOSITY_TUNER_DETAIL,
0866   MPI_T_VERBOSITY_TUNER_ALL,
0867   MPI_T_VERBOSITY_MPIDEV_BASIC,
0868   MPI_T_VERBOSITY_MPIDEV_DETAIL,
0869   MPI_T_VERBOSITY_MPIDEV_ALL
0870 };
0871 
0872 /*
0873  * MPIT Scopes
0874  */
0875 enum {
0876   MPI_T_SCOPE_CONSTANT,
0877   MPI_T_SCOPE_READONLY,
0878   MPI_T_SCOPE_LOCAL,
0879   MPI_T_SCOPE_GROUP,
0880   MPI_T_SCOPE_GROUP_EQ,
0881   MPI_T_SCOPE_ALL,
0882   MPI_T_SCOPE_ALL_EQ
0883 };
0884 
0885 /*
0886  * MPIT Object Binding
0887  */
0888 enum {
0889   MPI_T_BIND_NO_OBJECT,
0890   MPI_T_BIND_MPI_COMM,
0891   MPI_T_BIND_MPI_DATATYPE,
0892   MPI_T_BIND_MPI_ERRHANDLER,
0893   MPI_T_BIND_MPI_FILE,
0894   MPI_T_BIND_MPI_GROUP,
0895   MPI_T_BIND_MPI_OP,
0896   MPI_T_BIND_MPI_REQUEST,
0897   MPI_T_BIND_MPI_WIN,
0898   MPI_T_BIND_MPI_MESSAGE,
0899   MPI_T_BIND_MPI_INFO
0900 };
0901 
0902 /*
0903  * MPIT pvar classes
0904  */
0905 enum {
0906   MPI_T_PVAR_CLASS_STATE,
0907   MPI_T_PVAR_CLASS_LEVEL,
0908   MPI_T_PVAR_CLASS_SIZE,
0909   MPI_T_PVAR_CLASS_PERCENTAGE,
0910   MPI_T_PVAR_CLASS_HIGHWATERMARK,
0911   MPI_T_PVAR_CLASS_LOWWATERMARK,
0912   MPI_T_PVAR_CLASS_COUNTER,
0913   MPI_T_PVAR_CLASS_AGGREGATE,
0914   MPI_T_PVAR_CLASS_TIMER,
0915   MPI_T_PVAR_CLASS_GENERIC
0916 };
0917 
0918 /*
0919  * NULL handles
0920  */
0921 #define MPI_SESSION_NULL OMPI_PREDEFINED_GLOBAL(MPI_Session, ompi_mpi_instance_null)
0922 #define MPI_GROUP_NULL OMPI_PREDEFINED_GLOBAL(MPI_Group, ompi_mpi_group_null)
0923 #define MPI_COMM_NULL OMPI_PREDEFINED_GLOBAL(MPI_Comm, ompi_mpi_comm_null)
0924 #define MPI_REQUEST_NULL OMPI_PREDEFINED_GLOBAL(MPI_Request, ompi_request_null)
0925 #define MPI_MESSAGE_NULL OMPI_PREDEFINED_GLOBAL(MPI_Message, ompi_message_null)
0926 #define MPI_OP_NULL OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_null)
0927 #define MPI_ERRHANDLER_NULL OMPI_PREDEFINED_GLOBAL(MPI_Errhandler, ompi_mpi_errhandler_null)
0928 #define MPI_INFO_NULL OMPI_PREDEFINED_GLOBAL(MPI_Info, ompi_mpi_info_null)
0929 #define MPI_WIN_NULL OMPI_PREDEFINED_GLOBAL(MPI_Win, ompi_mpi_win_null)
0930 #define MPI_FILE_NULL OMPI_PREDEFINED_GLOBAL(MPI_File, ompi_mpi_file_null)
0931 #define MPI_T_ENUM_NULL ((MPI_T_enum) NULL)
0932 
0933 /*
0934  * MPI_INFO_ENV handle
0935  */
0936 #define MPI_INFO_ENV OMPI_PREDEFINED_GLOBAL(MPI_Info, ompi_mpi_info_env)
0937 
0938 #if defined(c_plusplus) || defined(__cplusplus)
0939 #define MPI_STATUS_IGNORE (static_cast<MPI_Status *> (0))
0940 #define MPI_STATUSES_IGNORE (static_cast<MPI_Status *> (0))
0941 #else
0942 #define MPI_STATUS_IGNORE ((MPI_Status *) 0)
0943 #define MPI_STATUSES_IGNORE ((MPI_Status *) 0)
0944 #endif
0945 
0946 /*
0947  * Special MPI_T handles
0948  */
0949 #define MPI_T_PVAR_ALL_HANDLES ((MPI_T_pvar_handle) -1)
0950 #define MPI_T_PVAR_HANDLE_NULL ((MPI_T_pvar_handle) 0)
0951 #define MPI_T_PVAR_SESSION_NULL ((MPI_T_pvar_session) 0)
0952 #define MPI_T_CVAR_HANDLE_NULL ((MPI_T_cvar_handle) 0)
0953 
0954 /* MPI-2 specifies that the name "MPI_TYPE_NULL_DELETE_FN" (and all
0955    related friends) must be accessible in C, C++, and Fortran. This is
0956    unworkable if the back-end Fortran compiler uses all caps for its
0957    linker symbol convention -- it results in two functions with
0958    different signatures that have the same name (i.e., both C and
0959    Fortran use the symbol MPI_TYPE_NULL_DELETE_FN).  So we have to
0960    #define the C names to be something else, so that they names are
0961    *accessed* through MPI_TYPE_NULL_DELETE_FN, but their actual symbol
0962    name is different.
0963 
0964    However, this file is included when the fortran wrapper functions
0965    are compiled in Open MPI, so we do *not* want these #defines in
0966    this case (i.e., we need the Fortran wrapper function to be
0967    compiled as MPI_TYPE_NULL_DELETE_FN).  So add some #if kinds of
0968    protection for this case. */
0969 
0970 #if !defined(OMPI_COMPILING_FORTRAN_WRAPPERS)
0971 
0972 #define MPI_TYPE_NULL_DELETE_FN OMPI_C_MPI_TYPE_NULL_DELETE_FN
0973 #define MPI_TYPE_NULL_COPY_FN OMPI_C_MPI_TYPE_NULL_COPY_FN
0974 #define MPI_TYPE_DUP_FN OMPI_C_MPI_TYPE_DUP_FN
0975 
0976 #define MPI_COMM_NULL_DELETE_FN OMPI_C_MPI_COMM_NULL_DELETE_FN
0977 #define MPI_COMM_NULL_COPY_FN OMPI_C_MPI_COMM_NULL_COPY_FN
0978 #define MPI_COMM_DUP_FN OMPI_C_MPI_COMM_DUP_FN
0979 
0980 #define MPI_WIN_NULL_DELETE_FN OMPI_C_MPI_WIN_NULL_DELETE_FN
0981 #define MPI_WIN_NULL_COPY_FN OMPI_C_MPI_WIN_NULL_COPY_FN
0982 #define MPI_WIN_DUP_FN OMPI_C_MPI_WIN_DUP_FN
0983 
0984 /* MPI_CONVERSION_FN_NULL is a sentinel value, but it has to be large
0985    enough to be the same size as a valid function pointer.  It
0986    therefore shares many characteristics between Fortran constants and
0987    Fortran sentinel functions.  For example, it shares the problem of
0988    having Fortran compilers have all-caps versions of the symbols that
0989    must be able to be present, and therefore has to be in this
0990    conditional block in mpi.h. */
0991 #define MPI_CONVERSION_FN_NULL ((MPI_Datarep_conversion_function*) 0)
0992 #endif
0993 
0994 OMPI_DECLSPEC int OMPI_C_MPI_TYPE_NULL_DELETE_FN( MPI_Datatype datatype,
0995                                                   int type_keyval,
0996                                                   void* attribute_val_out,
0997                                                   void* extra_state );
0998 OMPI_DECLSPEC int OMPI_C_MPI_TYPE_NULL_COPY_FN( MPI_Datatype datatype,
0999                                                 int type_keyval,
1000                                                 void* extra_state,
1001                                                 void* attribute_val_in,
1002                                                 void* attribute_val_out,
1003                                                 int* flag );
1004 OMPI_DECLSPEC int OMPI_C_MPI_TYPE_DUP_FN( MPI_Datatype datatype,
1005                                           int type_keyval,
1006                                           void* extra_state,
1007                                           void* attribute_val_in,
1008                                           void* attribute_val_out,
1009                                           int* flag );
1010 OMPI_DECLSPEC int OMPI_C_MPI_COMM_NULL_DELETE_FN( MPI_Comm comm,
1011                                                   int comm_keyval,
1012                                                   void* attribute_val_out,
1013                                                   void* extra_state );
1014 OMPI_DECLSPEC int OMPI_C_MPI_COMM_NULL_COPY_FN( MPI_Comm comm,
1015                                                 int comm_keyval,
1016                                                 void* extra_state,
1017                                                 void* attribute_val_in,
1018                                                 void* attribute_val_out,
1019                                                 int* flag );
1020 OMPI_DECLSPEC int OMPI_C_MPI_COMM_DUP_FN( MPI_Comm comm, int comm_keyval,
1021                                           void* extra_state,
1022                                           void* attribute_val_in,
1023                                           void* attribute_val_out,
1024                                           int* flag );
1025 OMPI_DECLSPEC int OMPI_C_MPI_WIN_NULL_DELETE_FN( MPI_Win window,
1026                                                  int win_keyval,
1027                                                  void* attribute_val_out,
1028                                                  void* extra_state );
1029 OMPI_DECLSPEC int OMPI_C_MPI_WIN_NULL_COPY_FN( MPI_Win window, int win_keyval,
1030                                                void* extra_state,
1031                                                void* attribute_val_in,
1032                                                void* attribute_val_out,
1033                                                int* flag );
1034 OMPI_DECLSPEC int OMPI_C_MPI_WIN_DUP_FN( MPI_Win window, int win_keyval,
1035                                          void* extra_state,
1036                                          void* attribute_val_in,
1037                                          void* attribute_val_out,
1038                                          int* flag );
1039 
1040 /*
1041  * External variables
1042  *
1043  * The below externs use the ompi_predefined_xxx_t structures to maintain
1044  * back compatibility between MPI library versions.
1045  * See ompi/communicator/communicator.h comments with struct ompi_communicator_t
1046  * for full explanation why we chose to use the ompi_predefined_xxx_t structure.
1047  */
1048 OMPI_DECLSPEC extern struct ompi_predefined_communicator_t ompi_mpi_comm_world;
1049 OMPI_DECLSPEC extern struct ompi_predefined_communicator_t ompi_mpi_comm_self;
1050 OMPI_DECLSPEC extern struct ompi_predefined_communicator_t ompi_mpi_comm_null;
1051 
1052 OMPI_DECLSPEC extern struct ompi_predefined_group_t ompi_mpi_group_empty;
1053 OMPI_DECLSPEC extern struct ompi_predefined_group_t ompi_mpi_group_null;
1054 
1055 OMPI_DECLSPEC extern struct ompi_predefined_instance_t ompi_mpi_instance_null;
1056 
1057 OMPI_DECLSPEC extern struct ompi_predefined_request_t ompi_request_null;
1058 
1059 OMPI_DECLSPEC extern struct ompi_predefined_message_t ompi_message_null;
1060 OMPI_DECLSPEC extern struct ompi_predefined_message_t ompi_message_no_proc;
1061 
1062 OMPI_DECLSPEC extern struct ompi_predefined_op_t ompi_mpi_op_null;
1063 OMPI_DECLSPEC extern struct ompi_predefined_op_t ompi_mpi_op_min;
1064 OMPI_DECLSPEC extern struct ompi_predefined_op_t ompi_mpi_op_max;
1065 OMPI_DECLSPEC extern struct ompi_predefined_op_t ompi_mpi_op_sum;
1066 OMPI_DECLSPEC extern struct ompi_predefined_op_t ompi_mpi_op_prod;
1067 OMPI_DECLSPEC extern struct ompi_predefined_op_t ompi_mpi_op_land;
1068 OMPI_DECLSPEC extern struct ompi_predefined_op_t ompi_mpi_op_band;
1069 OMPI_DECLSPEC extern struct ompi_predefined_op_t ompi_mpi_op_lor;
1070 OMPI_DECLSPEC extern struct ompi_predefined_op_t ompi_mpi_op_bor;
1071 OMPI_DECLSPEC extern struct ompi_predefined_op_t ompi_mpi_op_lxor;
1072 OMPI_DECLSPEC extern struct ompi_predefined_op_t ompi_mpi_op_bxor;
1073 OMPI_DECLSPEC extern struct ompi_predefined_op_t ompi_mpi_op_maxloc;
1074 OMPI_DECLSPEC extern struct ompi_predefined_op_t ompi_mpi_op_minloc;
1075 OMPI_DECLSPEC extern struct ompi_predefined_op_t ompi_mpi_op_replace;
1076 OMPI_DECLSPEC extern struct ompi_predefined_op_t ompi_mpi_op_no_op;
1077 
1078 
1079 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_datatype_null;
1080 
1081 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_char;
1082 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_signed_char;
1083 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_unsigned_char;
1084 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_byte;
1085 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_short;
1086 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_unsigned_short;
1087 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_int;
1088 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_unsigned;
1089 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_long;
1090 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_unsigned_long;
1091 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_long_long_int;
1092 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_unsigned_long_long;
1093 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_float;
1094 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_double;
1095 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_long_double;
1096 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_wchar;
1097 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_packed;
1098 
1099 /*
1100  * Following are the C++/C99 datatypes
1101  */
1102 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_cxx_bool;
1103 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_cxx_cplex;
1104 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_cxx_dblcplex;
1105 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_cxx_ldblcplex;
1106 
1107 /*
1108  * Following are the Fortran datatypes
1109  */
1110 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_logical;
1111 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_character;
1112 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_integer;
1113 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_real;
1114 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_dblprec;
1115 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_cplex;
1116 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_dblcplex;
1117 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_ldblcplex;
1118 
1119 /* Aggregate struct datatypes are not const */
1120 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_2int;
1121 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_2integer;
1122 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_2real;
1123 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_2dblprec;
1124 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_2cplex;
1125 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_2dblcplex;
1126 
1127 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_float_int;
1128 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_double_int;
1129 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_longdbl_int;
1130 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_short_int;
1131 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_long_int;
1132 
1133 /* Optional MPI2 datatypes, always declared and defined, but not "exported" as MPI_LOGICAL1 */
1134 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_logical1;
1135 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_logical2;
1136 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_logical4;
1137 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_logical8;
1138 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_integer1;
1139 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_integer2;
1140 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_integer4;
1141 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_integer8;
1142 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_integer16;
1143 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_real2;
1144 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_real4;
1145 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_real8;
1146 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_real16;
1147 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_complex4;
1148 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_complex8;
1149 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_complex16;
1150 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_complex32;
1151 
1152 /* New datatypes from the MPI 2.2 standard */
1153 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_int8_t;
1154 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_uint8_t;
1155 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_int16_t;
1156 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_uint16_t;
1157 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_int32_t;
1158 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_uint32_t;
1159 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_int64_t;
1160 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_uint64_t;
1161 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_aint;
1162 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_offset;
1163 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_count;
1164 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_c_bool;
1165 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_c_float_complex;
1166 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_c_double_complex;
1167 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_c_long_double_complex;
1168 
1169 OMPI_DECLSPEC extern struct ompi_predefined_errhandler_t ompi_mpi_errhandler_null;
1170 OMPI_DECLSPEC extern struct ompi_predefined_errhandler_t ompi_mpi_errors_are_fatal;
1171 OMPI_DECLSPEC extern struct ompi_predefined_errhandler_t ompi_mpi_errors_abort;
1172 OMPI_DECLSPEC extern struct ompi_predefined_errhandler_t ompi_mpi_errors_return;
1173 
1174 OMPI_DECLSPEC extern struct ompi_predefined_win_t ompi_mpi_win_null;
1175 OMPI_DECLSPEC extern struct ompi_predefined_file_t ompi_mpi_file_null;
1176 
1177 OMPI_DECLSPEC extern struct ompi_predefined_info_t ompi_mpi_info_null;
1178 OMPI_DECLSPEC extern struct ompi_predefined_info_t ompi_mpi_info_env;
1179 
1180 OMPI_DECLSPEC extern MPI_Fint *MPI_F_STATUS_IGNORE;
1181 OMPI_DECLSPEC extern MPI_Fint *MPI_F_STATUSES_IGNORE;
1182 
1183 OMPI_DECLSPEC extern MPI_Fint *MPI_F08_STATUS_IGNORE;
1184 OMPI_DECLSPEC extern MPI_Fint *MPI_F08_STATUSES_IGNORE;
1185 
1186 /*
1187  * Removed datatypes.  These datatypes are only available if Open MPI
1188  * was configured with --enable-mpi1-compatibility.
1189  *
1190  * These datatypes were formally removed from the MPI specification
1191  * and should no longer be used in MPI applications.
1192  */
1193 #if (!OMPI_OMIT_MPI1_COMPAT_DECLS)
1194 #    define MPI_UB OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_ub)
1195 #    define MPI_LB OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_lb)
1196 
1197 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_lb;
1198 OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_ub;
1199 
1200 #else
1201 /* If not building or configured --enable-mpi1-compatibility, then
1202  * we don't want these datatypes, instead we define MPI_UB and
1203  * MPI_LB to our Static Assert message if the compiler supports
1204  * that static assert with a nice message.
1205  */
1206 #    if (OMPI_REMOVED_USE_STATIC_ASSERT)
1207 #        define MPI_UB THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_UB, MPI_Type_create_resized);
1208 #        define MPI_LB THIS_SYMBOL_WAS_REMOVED_IN_MPI30(MPI_LB, MPI_Type_create_resized);
1209 #    endif /* OMPI_REMOVED_USE_STATIC_ASSERT */
1210 #endif /* Removed datatypes */
1211 
1212 
1213 /*
1214  * MPI predefined handles
1215  */
1216 #define MPI_COMM_WORLD OMPI_PREDEFINED_GLOBAL( MPI_Comm, ompi_mpi_comm_world)
1217 #define MPI_COMM_SELF OMPI_PREDEFINED_GLOBAL(MPI_Comm, ompi_mpi_comm_self)
1218 
1219 #define MPI_GROUP_EMPTY OMPI_PREDEFINED_GLOBAL(MPI_Group, ompi_mpi_group_empty)
1220 
1221 #define MPI_MESSAGE_NO_PROC OMPI_PREDEFINED_GLOBAL(MPI_Message, ompi_message_no_proc)
1222 
1223 #define MPI_MAX OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_max)
1224 #define MPI_MIN OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_min)
1225 #define MPI_SUM OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_sum)
1226 #define MPI_PROD OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_prod)
1227 #define MPI_LAND OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_land)
1228 #define MPI_BAND OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_band)
1229 #define MPI_LOR OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_lor)
1230 #define MPI_BOR OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_bor)
1231 #define MPI_LXOR OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_lxor)
1232 #define MPI_BXOR OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_bxor)
1233 #define MPI_MAXLOC OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_maxloc)
1234 #define MPI_MINLOC OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_minloc)
1235 #define MPI_REPLACE OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_replace)
1236 #define MPI_NO_OP OMPI_PREDEFINED_GLOBAL(MPI_Op, ompi_mpi_op_no_op)
1237 
1238 /* C datatypes */
1239 #define MPI_DATATYPE_NULL OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_datatype_null)
1240 #define MPI_BYTE OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_byte)
1241 #define MPI_PACKED OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_packed)
1242 #define MPI_CHAR OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_char)
1243 #define MPI_SHORT OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_short)
1244 #define MPI_INT OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_int)
1245 #define MPI_LONG OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_long)
1246 #define MPI_FLOAT OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_float)
1247 #define MPI_DOUBLE OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_double)
1248 #define MPI_LONG_DOUBLE OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_long_double)
1249 #define MPI_UNSIGNED_CHAR OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_unsigned_char)
1250 #define MPI_SIGNED_CHAR OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_signed_char)
1251 #define MPI_UNSIGNED_SHORT OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_unsigned_short)
1252 #define MPI_UNSIGNED_LONG OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_unsigned_long)
1253 #define MPI_UNSIGNED OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_unsigned)
1254 #define MPI_FLOAT_INT OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_float_int)
1255 #define MPI_DOUBLE_INT OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_double_int)
1256 #define MPI_LONG_DOUBLE_INT OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_longdbl_int)
1257 #define MPI_LONG_INT OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_long_int)
1258 #define MPI_SHORT_INT OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_short_int)
1259 #define MPI_2INT OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_2int)
1260 
1261 #define MPI_WCHAR OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_wchar)
1262 #if OPAL_HAVE_LONG_LONG
1263 #define MPI_LONG_LONG_INT OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_long_long_int)
1264 #define MPI_LONG_LONG OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_long_long_int)
1265 #define MPI_UNSIGNED_LONG_LONG OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_unsigned_long_long)
1266 #endif  /* OPAL_HAVE_LONG_LONG */
1267 #define MPI_2COMPLEX OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_2cplex)
1268 #define MPI_2DOUBLE_COMPLEX OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_2dblcplex)
1269 
1270 /* Fortran datatype bindings */
1271 #define MPI_CHARACTER OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_character)
1272 #define MPI_LOGICAL OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_logical)
1273 #if OMPI_HAVE_FORTRAN_LOGICAL1
1274 #define MPI_LOGICAL1 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_logical1)
1275 #endif
1276 #if OMPI_HAVE_FORTRAN_LOGICAL2
1277 #define MPI_LOGICAL2 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_logical2)
1278 #endif
1279 #if OMPI_HAVE_FORTRAN_LOGICAL4
1280 #define MPI_LOGICAL4 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_logical4)
1281 #endif
1282 #if OMPI_HAVE_FORTRAN_LOGICAL8
1283 #define MPI_LOGICAL8 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_logical8)
1284 #endif
1285 #define MPI_INTEGER OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_integer)
1286 #if OMPI_HAVE_FORTRAN_INTEGER1
1287 #define MPI_INTEGER1 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_integer1)
1288 #endif
1289 #if OMPI_HAVE_FORTRAN_INTEGER2
1290 #define MPI_INTEGER2 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_integer2)
1291 #endif
1292 #if OMPI_HAVE_FORTRAN_INTEGER4
1293 #define MPI_INTEGER4 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_integer4)
1294 #endif
1295 #if OMPI_HAVE_FORTRAN_INTEGER8
1296 #define MPI_INTEGER8 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_integer8)
1297 #endif
1298 #if OMPI_HAVE_FORTRAN_INTEGER16
1299 #define MPI_INTEGER16 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_integer16)
1300 #endif
1301 #define MPI_REAL OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_real)
1302 #if OMPI_HAVE_FORTRAN_REAL2
1303 #define MPI_REAL2 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_real2)
1304 #endif
1305 #if OMPI_HAVE_FORTRAN_REAL4
1306 #define MPI_REAL4 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_real4)
1307 #endif
1308 #if OMPI_HAVE_FORTRAN_REAL8
1309 #define MPI_REAL8 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_real8)
1310 #endif
1311 #if OMPI_HAVE_FORTRAN_REAL16
1312 #define MPI_REAL16 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_real16)
1313 #endif
1314 #define MPI_DOUBLE_PRECISION OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_dblprec)
1315 #define MPI_COMPLEX OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_cplex)
1316 #if OMPI_HAVE_FORTRAN_REAL2
1317 #define MPI_COMPLEX4 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_complex4)
1318 #endif
1319 #if OMPI_HAVE_FORTRAN_REAL4
1320 #define MPI_COMPLEX8 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_complex8)
1321 #endif
1322 #if OMPI_HAVE_FORTRAN_REAL8
1323 #define MPI_COMPLEX16 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_complex16)
1324 #endif
1325 #if OMPI_HAVE_FORTRAN_REAL16
1326 #define MPI_COMPLEX32 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_complex32)
1327 #endif
1328 #define MPI_DOUBLE_COMPLEX OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_dblcplex)
1329 #define MPI_2REAL OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_2real)
1330 #define MPI_2DOUBLE_PRECISION OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_2dblprec)
1331 #define MPI_2INTEGER OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_2integer)
1332 
1333 /* New datatypes from the MPI 2.2 standard */
1334 #define MPI_INT8_T                OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_int8_t)
1335 #define MPI_UINT8_T               OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_uint8_t)
1336 #define MPI_INT16_T               OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_int16_t)
1337 #define MPI_UINT16_T              OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_uint16_t)
1338 #define MPI_INT32_T               OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_int32_t)
1339 #define MPI_UINT32_T              OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_uint32_t)
1340 #define MPI_INT64_T               OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_int64_t)
1341 #define MPI_UINT64_T              OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_uint64_t)
1342 #define MPI_AINT                  OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_aint)
1343 #define MPI_OFFSET                OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_offset)
1344 #define MPI_C_BOOL                OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_c_bool)
1345 #if HAVE_FLOAT__COMPLEX
1346 #define MPI_C_COMPLEX             OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_c_float_complex)
1347 #define MPI_C_FLOAT_COMPLEX       OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_c_float_complex)
1348 #endif
1349 #if HAVE_DOUBLE__COMPLEX
1350 #define MPI_C_DOUBLE_COMPLEX      OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_c_double_complex)
1351 #endif
1352 #if HAVE_LONG_DOUBLE__COMPLEX
1353 #define MPI_C_LONG_DOUBLE_COMPLEX OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_c_long_double_complex)
1354 #endif
1355 #define MPI_CXX_BOOL              OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_cxx_bool)
1356 #define MPI_CXX_COMPLEX           OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_cxx_cplex)
1357 #define MPI_CXX_FLOAT_COMPLEX     OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_cxx_cplex)
1358 #define MPI_CXX_DOUBLE_COMPLEX    OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_cxx_dblcplex)
1359 #define MPI_CXX_LONG_DOUBLE_COMPLEX OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_cxx_ldblcplex)
1360 
1361 /* New datatypes from the 3.0 standard */
1362 #define MPI_COUNT                 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_count)
1363 
1364 #define MPI_ERRORS_ARE_FATAL OMPI_PREDEFINED_GLOBAL(MPI_Errhandler, ompi_mpi_errors_are_fatal)
1365 #define MPI_ERRORS_ABORT OMPI_PREDEFINED_GLOBAL(MPI_Errhandler, ompi_mpi_errors_abort)
1366 #define MPI_ERRORS_RETURN OMPI_PREDEFINED_GLOBAL(MPI_Errhandler, ompi_mpi_errors_return)
1367 
1368 /* Typeclass definition for MPI_Type_match_size */
1369 #define MPI_TYPECLASS_INTEGER    1
1370 #define MPI_TYPECLASS_REAL       2
1371 #define MPI_TYPECLASS_COMPLEX    3
1372 
1373 /* Aint helper macros (MPI-3.1) */
1374 #define MPI_Aint_add(base, disp) ((MPI_Aint) ((char *) (base) + (disp)))
1375 #define MPI_Aint_diff(addr1, addr2) ((MPI_Aint) ((char *) (addr1) - (char *) (addr2)))
1376 #define PMPI_Aint_add(base, disp) MPI_Aint_add(base, disp)
1377 #define PMPI_Aint_diff(addr1, addr2) MPI_Aint_diff(addr1, addr2)
1378 
1379 /*
1380  * Predefined info keys
1381  */
1382 #define MPI_INFO_KEY_SESSION_PSET_SIZE  "mpi_size"
1383 
1384 /*
1385  * MPI API
1386  */
1387 
1388 OMPI_DECLSPEC  int MPI_Abort(MPI_Comm comm, int errorcode);
1389 OMPI_DECLSPEC  int MPI_Accumulate(const void *origin_addr, int origin_count, MPI_Datatype origin_datatype,
1390                                   int target_rank, MPI_Aint target_disp, int target_count,
1391                                   MPI_Datatype target_datatype, MPI_Op op, MPI_Win win);
1392 OMPI_DECLSPEC  int MPI_Add_error_class(int *errorclass);
1393 OMPI_DECLSPEC  int MPI_Add_error_code(int errorclass, int *errorcode);
1394 OMPI_DECLSPEC  int MPI_Add_error_string(int errorcode, const char *string);
1395 OMPI_DECLSPEC  int MPI_Allgather(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1396                                  void *recvbuf, int recvcount,
1397                                  MPI_Datatype recvtype, MPI_Comm comm);
1398 OMPI_DECLSPEC  int MPI_Iallgather(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1399                                   void *recvbuf, int recvcount,
1400                                   MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request);
1401 OMPI_DECLSPEC  int MPI_Allgather_init(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1402                                       void *recvbuf, int recvcount, MPI_Datatype recvtype,
1403                                       MPI_Comm comm, MPI_Info info, MPI_Request *request);
1404 OMPI_DECLSPEC  int MPI_Allgatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1405                                   void *recvbuf, const int recvcounts[], const int displs[], MPI_Datatype recvtype,
1406                                   MPI_Comm comm);
1407 OMPI_DECLSPEC  int MPI_Iallgatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1408                                    void *recvbuf, const int recvcounts[], const int displs[], MPI_Datatype recvtype,
1409                                    MPI_Comm comm, MPI_Request *request);
1410 OMPI_DECLSPEC  int MPI_Allgatherv_init(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1411                                        void *recvbuf, const int recvcounts[], const int displs[], MPI_Datatype recvtype,
1412                                        MPI_Comm comm, MPI_Info info, MPI_Request *request);
1413 OMPI_DECLSPEC  int MPI_Alloc_mem(MPI_Aint size, MPI_Info info,
1414                                  void *baseptr);
1415 OMPI_DECLSPEC  int MPI_Allreduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
1416                                  MPI_Op op, MPI_Comm comm);
1417 OMPI_DECLSPEC  int MPI_Iallreduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
1418                                   MPI_Op op, MPI_Comm comm, MPI_Request *request);
1419 OMPI_DECLSPEC  int MPI_Allreduce_init(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
1420                                       MPI_Op op, MPI_Comm comm, MPI_Info info, MPI_Request *request);
1421 OMPI_DECLSPEC  int MPI_Alltoall(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1422                                 void *recvbuf, int recvcount,
1423                                 MPI_Datatype recvtype, MPI_Comm comm);
1424 OMPI_DECLSPEC  int MPI_Ialltoall(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1425                                  void *recvbuf, int recvcount, MPI_Datatype recvtype,
1426                                  MPI_Comm comm, MPI_Request *request);
1427 OMPI_DECLSPEC  int MPI_Alltoall_init(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1428                                  void *recvbuf, int recvcount, MPI_Datatype recvtype,
1429                                  MPI_Comm comm, MPI_Info info, MPI_Request *request);
1430 OMPI_DECLSPEC  int MPI_Alltoallv(const void *sendbuf, const int sendcounts[], const int sdispls[], MPI_Datatype sendtype,
1431                                  void *recvbuf, const int recvcounts[], const int rdispls[], MPI_Datatype recvtype,
1432                                  MPI_Comm comm);
1433 OMPI_DECLSPEC  int MPI_Ialltoallv(const void *sendbuf, const int sendcounts[], const int sdispls[], MPI_Datatype sendtype,
1434                                   void *recvbuf, const int recvcounts[], const int rdispls[], MPI_Datatype recvtype,
1435                                   MPI_Comm comm, MPI_Request *request);
1436 OMPI_DECLSPEC  int MPI_Alltoallv_init(const void *sendbuf, const int sendcounts[], const int sdispls[], MPI_Datatype sendtype,
1437                                       void *recvbuf, const int recvcounts[], const int rdispls[], MPI_Datatype recvtype,
1438                                       MPI_Comm comm, MPI_Info info, MPI_Request *request);
1439 OMPI_DECLSPEC  int MPI_Alltoallw(const void *sendbuf, const int sendcounts[], const int sdispls[], const MPI_Datatype sendtypes[],
1440                                  void *recvbuf, const int recvcounts[], const int rdispls[], const MPI_Datatype recvtypes[],
1441                                  MPI_Comm comm);
1442 OMPI_DECLSPEC  int MPI_Ialltoallw(const void *sendbuf, const int sendcounts[], const int sdispls[], const MPI_Datatype sendtypes[],
1443                                   void *recvbuf, const int recvcounts[], const int rdispls[], const MPI_Datatype recvtypes[],
1444                                   MPI_Comm comm, MPI_Request *request);
1445 OMPI_DECLSPEC  int MPI_Alltoallw_init(const void *sendbuf, const int sendcounts[], const int sdispls[], const MPI_Datatype sendtypes[],
1446                                       void *recvbuf, const int recvcounts[], const int rdispls[], const MPI_Datatype recvtypes[],
1447                                       MPI_Comm comm, MPI_Info info, MPI_Request *request);
1448 OMPI_DECLSPEC  int MPI_Barrier(MPI_Comm comm);
1449 OMPI_DECLSPEC  int MPI_Ibarrier(MPI_Comm comm, MPI_Request *request);
1450 OMPI_DECLSPEC  int MPI_Barrier_init(MPI_Comm comm, MPI_Info info, MPI_Request *request);
1451 OMPI_DECLSPEC  int MPI_Bcast(void *buffer, int count, MPI_Datatype datatype,
1452                              int root, MPI_Comm comm);
1453 OMPI_DECLSPEC  int MPI_Ibcast(void *buffer, int count, MPI_Datatype datatype,
1454                               int root, MPI_Comm comm, MPI_Request *request);
1455 OMPI_DECLSPEC  int MPI_Bcast_init(void *buffer, int count, MPI_Datatype datatype,
1456                                   int root, MPI_Comm comm, MPI_Info info, MPI_Request *request);
1457 OMPI_DECLSPEC  int MPI_Bsend(const void *buf, int count, MPI_Datatype datatype,
1458                              int dest, int tag, MPI_Comm comm);
1459 OMPI_DECLSPEC  int MPI_Bsend_init(const void *buf, int count, MPI_Datatype datatype,
1460                                   int dest, int tag, MPI_Comm comm, MPI_Request *request);
1461 OMPI_DECLSPEC  int MPI_Buffer_attach(void *buffer, int size);
1462 OMPI_DECLSPEC  int MPI_Buffer_detach(void *buffer, int *size);
1463 OMPI_DECLSPEC  int MPI_Cancel(MPI_Request *request);
1464 OMPI_DECLSPEC  int MPI_Cart_coords(MPI_Comm comm, int rank, int maxdims, int coords[]);
1465 OMPI_DECLSPEC  int MPI_Cart_create(MPI_Comm old_comm, int ndims, const int dims[],
1466                                    const int periods[], int reorder, MPI_Comm *comm_cart);
1467 OMPI_DECLSPEC  int MPI_Cart_get(MPI_Comm comm, int maxdims, int dims[],
1468                                 int periods[], int coords[]);
1469 OMPI_DECLSPEC  int MPI_Cart_map(MPI_Comm comm, int ndims, const int dims[],
1470                                 const int periods[], int *newrank);
1471 OMPI_DECLSPEC  int MPI_Cart_rank(MPI_Comm comm, const int coords[], int *rank);
1472 OMPI_DECLSPEC  int MPI_Cart_shift(MPI_Comm comm, int direction, int disp,
1473                                   int *rank_source, int *rank_dest);
1474 OMPI_DECLSPEC  int MPI_Cart_sub(MPI_Comm comm, const int remain_dims[], MPI_Comm *new_comm);
1475 OMPI_DECLSPEC  int MPI_Cartdim_get(MPI_Comm comm, int *ndims);
1476 OMPI_DECLSPEC  int MPI_Close_port(const char *port_name);
1477 OMPI_DECLSPEC  int MPI_Comm_accept(const char *port_name, MPI_Info info, int root,
1478                                    MPI_Comm comm, MPI_Comm *newcomm);
1479 OMPI_DECLSPEC  MPI_Fint MPI_Comm_c2f(MPI_Comm comm);
1480 OMPI_DECLSPEC  int MPI_Comm_call_errhandler(MPI_Comm comm, int errorcode);
1481 OMPI_DECLSPEC  int MPI_Comm_compare(MPI_Comm comm1, MPI_Comm comm2, int *result);
1482 OMPI_DECLSPEC  int MPI_Comm_connect(const char *port_name, MPI_Info info, int root,
1483                                     MPI_Comm comm, MPI_Comm *newcomm);
1484 OMPI_DECLSPEC  int MPI_Comm_create_errhandler(MPI_Comm_errhandler_function *function,
1485                                               MPI_Errhandler *errhandler);
1486 OMPI_DECLSPEC  int MPI_Comm_create_keyval(MPI_Comm_copy_attr_function *comm_copy_attr_fn,
1487                                           MPI_Comm_delete_attr_function *comm_delete_attr_fn,
1488                                           int *comm_keyval, void *extra_state);
1489 OMPI_DECLSPEC  int MPI_Comm_create_group(MPI_Comm comm, MPI_Group group, int tag, MPI_Comm *newcomm);
1490 OMPI_DECLSPEC  int MPI_Comm_create_from_group(MPI_Group group, const char *tag, MPI_Info info,
1491                           MPI_Errhandler errhandler, MPI_Comm *newcomm);
1492 OMPI_DECLSPEC  int MPI_Comm_create(MPI_Comm comm, MPI_Group group, MPI_Comm *newcomm);
1493 OMPI_DECLSPEC  int MPI_Comm_delete_attr(MPI_Comm comm, int comm_keyval);
1494 OMPI_DECLSPEC  int MPI_Comm_disconnect(MPI_Comm *comm);
1495 OMPI_DECLSPEC  int MPI_Comm_dup(MPI_Comm comm, MPI_Comm *newcomm);
1496 OMPI_DECLSPEC  int MPI_Comm_idup(MPI_Comm comm, MPI_Comm *newcomm, MPI_Request *request);
1497 OMPI_DECLSPEC  int MPI_Comm_dup_with_info(MPI_Comm comm, MPI_Info info, MPI_Comm *newcomm);
1498 OMPI_DECLSPEC  int MPI_Comm_idup_with_info(MPI_Comm comm, MPI_Info info, MPI_Comm *newcomm,
1499                                            MPI_Request *request);
1500 OMPI_DECLSPEC  MPI_Comm MPI_Comm_f2c(MPI_Fint comm);
1501 OMPI_DECLSPEC  int MPI_Comm_free_keyval(int *comm_keyval);
1502 OMPI_DECLSPEC  int MPI_Comm_free(MPI_Comm *comm);
1503 OMPI_DECLSPEC  int MPI_Comm_get_attr(MPI_Comm comm, int comm_keyval,
1504                                      void *attribute_val, int *flag);
1505 OMPI_DECLSPEC  int MPI_Dist_graph_create(MPI_Comm comm_old, int n, const int nodes[],
1506                                          const int degrees[], const int targets[],
1507                                          const int weights[], MPI_Info info,
1508                                          int reorder, MPI_Comm * newcomm);
1509 OMPI_DECLSPEC  int MPI_Dist_graph_create_adjacent(MPI_Comm comm_old,
1510                                                   int indegree, const int sources[],
1511                                                   const int sourceweights[],
1512                                                   int outdegree,
1513                                                   const int destinations[],
1514                                                   const int destweights[],
1515                                                   MPI_Info info, int reorder,
1516                                                   MPI_Comm *comm_dist_graph);
1517 OMPI_DECLSPEC int MPI_Dist_graph_neighbors(MPI_Comm comm, int maxindegree,
1518                                            int sources[], int sourceweights[],
1519                                            int maxoutdegree,
1520                                            int destinations[],
1521                                            int destweights[]);
1522 OMPI_DECLSPEC  int MPI_Dist_graph_neighbors_count(MPI_Comm comm,
1523                                                   int *inneighbors,
1524                                                   int *outneighbors,
1525                                                   int *weighted);
1526 OMPI_DECLSPEC  int MPI_Comm_get_errhandler(MPI_Comm comm, MPI_Errhandler *erhandler);
1527 OMPI_DECLSPEC  int MPI_Comm_get_info(MPI_Comm comm, MPI_Info *info_used);
1528 OMPI_DECLSPEC  int MPI_Comm_get_name(MPI_Comm comm, char *comm_name, int *resultlen);
1529 OMPI_DECLSPEC  int MPI_Comm_get_parent(MPI_Comm *parent);
1530 OMPI_DECLSPEC  int MPI_Comm_group(MPI_Comm comm, MPI_Group *group);
1531 OMPI_DECLSPEC  int MPI_Comm_join(int fd, MPI_Comm *intercomm);
1532 OMPI_DECLSPEC  int MPI_Comm_rank(MPI_Comm comm, int *rank);
1533 OMPI_DECLSPEC  int MPI_Comm_remote_group(MPI_Comm comm, MPI_Group *group);
1534 OMPI_DECLSPEC  int MPI_Comm_remote_size(MPI_Comm comm, int *size);
1535 OMPI_DECLSPEC  int MPI_Comm_set_attr(MPI_Comm comm, int comm_keyval, void *attribute_val);
1536 OMPI_DECLSPEC  int MPI_Comm_set_errhandler(MPI_Comm comm, MPI_Errhandler errhandler);
1537 OMPI_DECLSPEC  int MPI_Comm_set_info(MPI_Comm comm, MPI_Info info);
1538 OMPI_DECLSPEC  int MPI_Comm_set_name(MPI_Comm comm, const char *comm_name);
1539 OMPI_DECLSPEC  int MPI_Comm_size(MPI_Comm comm, int *size);
1540 OMPI_DECLSPEC  int MPI_Comm_spawn(const char *command, char *argv[], int maxprocs, MPI_Info info,
1541                                   int root, MPI_Comm comm, MPI_Comm *intercomm,
1542                                   int array_of_errcodes[]);
1543 OMPI_DECLSPEC  int MPI_Comm_spawn_multiple(int count, char *array_of_commands[], char **array_of_argv[],
1544                                            const int array_of_maxprocs[], const MPI_Info array_of_info[],
1545                                            int root, MPI_Comm comm, MPI_Comm *intercomm,
1546                                            int array_of_errcodes[]);
1547 OMPI_DECLSPEC  int MPI_Comm_split(MPI_Comm comm, int color, int key, MPI_Comm *newcomm);
1548 OMPI_DECLSPEC  int MPI_Comm_split_type(MPI_Comm comm, int split_type, int key, MPI_Info info, MPI_Comm *newcomm);
1549 OMPI_DECLSPEC  int MPI_Comm_test_inter(MPI_Comm comm, int *flag);
1550 OMPI_DECLSPEC  int MPI_Compare_and_swap(const void *origin_addr, const void *compare_addr,
1551                                         void *result_addr, MPI_Datatype datatype, int target_rank,
1552                                         MPI_Aint target_disp, MPI_Win win);
1553 OMPI_DECLSPEC  int MPI_Dims_create(int nnodes, int ndims, int dims[]);
1554 OMPI_DECLSPEC  MPI_Fint MPI_Errhandler_c2f(MPI_Errhandler errhandler);
1555 OMPI_DECLSPEC  MPI_Errhandler MPI_Errhandler_f2c(MPI_Fint errhandler);
1556 OMPI_DECLSPEC  int MPI_Errhandler_free(MPI_Errhandler *errhandler);
1557 OMPI_DECLSPEC  int MPI_Error_class(int errorcode, int *errorclass);
1558 OMPI_DECLSPEC  int MPI_Error_string(int errorcode, char *string, int *resultlen);
1559 OMPI_DECLSPEC  int MPI_Exscan(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
1560                               MPI_Op op, MPI_Comm comm);
1561 OMPI_DECLSPEC  int MPI_Iexscan(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
1562                                MPI_Op op, MPI_Comm comm, MPI_Request *request);
1563 OMPI_DECLSPEC  int MPI_Exscan_init(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
1564                                    MPI_Op op, MPI_Comm comm, MPI_Info info, MPI_Request *request);
1565 OMPI_DECLSPEC  int MPI_Fetch_and_op(const void *origin_addr, void *result_addr, MPI_Datatype datatype,
1566                                     int target_rank, MPI_Aint target_disp, MPI_Op op, MPI_Win win);
1567 OMPI_DECLSPEC  MPI_Fint MPI_File_c2f(MPI_File file);
1568 OMPI_DECLSPEC  MPI_File MPI_File_f2c(MPI_Fint file);
1569 OMPI_DECLSPEC  int MPI_File_call_errhandler(MPI_File fh, int errorcode);
1570 OMPI_DECLSPEC  int MPI_File_create_errhandler(MPI_File_errhandler_function *function,
1571                                               MPI_Errhandler *errhandler);
1572 OMPI_DECLSPEC  int MPI_File_set_errhandler( MPI_File file, MPI_Errhandler errhandler);
1573 OMPI_DECLSPEC  int MPI_File_get_errhandler( MPI_File file, MPI_Errhandler *errhandler);
1574 OMPI_DECLSPEC  int MPI_File_open(MPI_Comm comm, const char *filename, int amode,
1575                                  MPI_Info info, MPI_File *fh);
1576 OMPI_DECLSPEC  int MPI_File_close(MPI_File *fh);
1577 OMPI_DECLSPEC  int MPI_File_delete(const char *filename, MPI_Info info);
1578 OMPI_DECLSPEC  int MPI_File_set_size(MPI_File fh, MPI_Offset size);
1579 OMPI_DECLSPEC  int MPI_File_preallocate(MPI_File fh, MPI_Offset size);
1580 OMPI_DECLSPEC  int MPI_File_get_size(MPI_File fh, MPI_Offset *size);
1581 OMPI_DECLSPEC  int MPI_File_get_group(MPI_File fh, MPI_Group *group);
1582 OMPI_DECLSPEC  int MPI_File_get_amode(MPI_File fh, int *amode);
1583 OMPI_DECLSPEC  int MPI_File_set_info(MPI_File fh, MPI_Info info);
1584 OMPI_DECLSPEC  int MPI_File_get_info(MPI_File fh, MPI_Info *info_used);
1585 OMPI_DECLSPEC  int MPI_File_set_view(MPI_File fh, MPI_Offset disp, MPI_Datatype etype,
1586                                      MPI_Datatype filetype, const char *datarep, MPI_Info info);
1587 OMPI_DECLSPEC  int MPI_File_get_view(MPI_File fh, MPI_Offset *disp,
1588                                      MPI_Datatype *etype,
1589                                      MPI_Datatype *filetype, char *datarep);
1590 OMPI_DECLSPEC  int MPI_File_read_at(MPI_File fh, MPI_Offset offset, void *buf,
1591                                     int count, MPI_Datatype datatype, MPI_Status *status);
1592 OMPI_DECLSPEC  int MPI_File_read_at_all(MPI_File fh, MPI_Offset offset, void *buf,
1593                                         int count, MPI_Datatype datatype, MPI_Status *status);
1594 OMPI_DECLSPEC  int MPI_File_write_at(MPI_File fh, MPI_Offset offset, const void *buf,
1595                                      int count, MPI_Datatype datatype, MPI_Status *status);
1596 OMPI_DECLSPEC  int MPI_File_write_at_all(MPI_File fh, MPI_Offset offset, const void *buf,
1597                                          int count, MPI_Datatype datatype, MPI_Status *status);
1598 OMPI_DECLSPEC  int MPI_File_iread_at(MPI_File fh, MPI_Offset offset, void *buf,
1599                                      int count, MPI_Datatype datatype, MPI_Request *request);
1600 OMPI_DECLSPEC  int MPI_File_iwrite_at(MPI_File fh, MPI_Offset offset, const void *buf,
1601                                       int count, MPI_Datatype datatype, MPI_Request *request);
1602 OMPI_DECLSPEC  int MPI_File_iread_at_all(MPI_File fh, MPI_Offset offset, void *buf,
1603                                      int count, MPI_Datatype datatype, MPI_Request *request);
1604 OMPI_DECLSPEC  int MPI_File_iwrite_at_all(MPI_File fh, MPI_Offset offset, const void *buf,
1605                                       int count, MPI_Datatype datatype, MPI_Request *request);
1606 OMPI_DECLSPEC  int MPI_File_read(MPI_File fh, void *buf, int count,
1607                                  MPI_Datatype datatype, MPI_Status *status);
1608 OMPI_DECLSPEC  int MPI_File_read_all(MPI_File fh, void *buf, int count,
1609                                      MPI_Datatype datatype, MPI_Status *status);
1610 OMPI_DECLSPEC  int MPI_File_write(MPI_File fh, const void *buf, int count,
1611                                   MPI_Datatype datatype, MPI_Status *status);
1612 OMPI_DECLSPEC  int MPI_File_write_all(MPI_File fh, const void *buf, int count,
1613                                       MPI_Datatype datatype, MPI_Status *status);
1614 OMPI_DECLSPEC  int MPI_File_iread(MPI_File fh, void *buf, int count,
1615                                   MPI_Datatype datatype, MPI_Request *request);
1616 OMPI_DECLSPEC  int MPI_File_iwrite(MPI_File fh, const void *buf, int count,
1617                                    MPI_Datatype datatype, MPI_Request *request);
1618 OMPI_DECLSPEC  int MPI_File_iread_all(MPI_File fh, void *buf, int count,
1619                                   MPI_Datatype datatype, MPI_Request *request);
1620 OMPI_DECLSPEC  int MPI_File_iwrite_all(MPI_File fh, const void *buf, int count,
1621                                    MPI_Datatype datatype, MPI_Request *request);
1622 OMPI_DECLSPEC  int MPI_File_seek(MPI_File fh, MPI_Offset offset, int whence);
1623 OMPI_DECLSPEC  int MPI_File_get_position(MPI_File fh, MPI_Offset *offset);
1624 OMPI_DECLSPEC  int MPI_File_get_byte_offset(MPI_File fh, MPI_Offset offset,
1625                                             MPI_Offset *disp);
1626 OMPI_DECLSPEC  int MPI_File_read_shared(MPI_File fh, void *buf, int count,
1627                                         MPI_Datatype datatype, MPI_Status *status);
1628 OMPI_DECLSPEC  int MPI_File_write_shared(MPI_File fh, const void *buf, int count,
1629                                          MPI_Datatype datatype, MPI_Status *status);
1630 OMPI_DECLSPEC  int MPI_File_iread_shared(MPI_File fh, void *buf, int count,
1631                                          MPI_Datatype datatype, MPI_Request *request);
1632 OMPI_DECLSPEC  int MPI_File_iwrite_shared(MPI_File fh, const void *buf, int count,
1633                                           MPI_Datatype datatype, MPI_Request *request);
1634 OMPI_DECLSPEC  int MPI_File_read_ordered(MPI_File fh, void *buf, int count,
1635                                          MPI_Datatype datatype, MPI_Status *status);
1636 OMPI_DECLSPEC  int MPI_File_write_ordered(MPI_File fh, const void *buf, int count,
1637                                           MPI_Datatype datatype, MPI_Status *status);
1638 OMPI_DECLSPEC  int MPI_File_seek_shared(MPI_File fh, MPI_Offset offset, int whence);
1639 OMPI_DECLSPEC  int MPI_File_get_position_shared(MPI_File fh, MPI_Offset *offset);
1640 OMPI_DECLSPEC  int MPI_File_read_at_all_begin(MPI_File fh, MPI_Offset offset, void *buf,
1641                                               int count, MPI_Datatype datatype);
1642 OMPI_DECLSPEC  int MPI_File_read_at_all_end(MPI_File fh, void *buf, MPI_Status *status);
1643 OMPI_DECLSPEC  int MPI_File_write_at_all_begin(MPI_File fh, MPI_Offset offset, const void *buf,
1644                                                int count, MPI_Datatype datatype);
1645 OMPI_DECLSPEC  int MPI_File_write_at_all_end(MPI_File fh, const void *buf, MPI_Status *status);
1646 OMPI_DECLSPEC  int MPI_File_read_all_begin(MPI_File fh, void *buf, int count,
1647                                            MPI_Datatype datatype);
1648 OMPI_DECLSPEC  int MPI_File_read_all_end(MPI_File fh, void *buf, MPI_Status *status);
1649 OMPI_DECLSPEC  int MPI_File_write_all_begin(MPI_File fh, const void *buf, int count,
1650                                             MPI_Datatype datatype);
1651 OMPI_DECLSPEC  int MPI_File_write_all_end(MPI_File fh, const void *buf, MPI_Status *status);
1652 OMPI_DECLSPEC  int MPI_File_read_ordered_begin(MPI_File fh, void *buf, int count,
1653                                                MPI_Datatype datatype);
1654 OMPI_DECLSPEC  int MPI_File_read_ordered_end(MPI_File fh, void *buf, MPI_Status *status);
1655 OMPI_DECLSPEC  int MPI_File_write_ordered_begin(MPI_File fh, const void *buf, int count,
1656                                                 MPI_Datatype datatype);
1657 OMPI_DECLSPEC  int MPI_File_write_ordered_end(MPI_File fh, const void *buf, MPI_Status *status);
1658 OMPI_DECLSPEC  int MPI_File_get_type_extent(MPI_File fh, MPI_Datatype datatype,
1659                                             MPI_Aint *extent);
1660 OMPI_DECLSPEC  int MPI_File_set_atomicity(MPI_File fh, int flag);
1661 OMPI_DECLSPEC  int MPI_File_get_atomicity(MPI_File fh, int *flag);
1662 OMPI_DECLSPEC  int MPI_File_sync(MPI_File fh);
1663 OMPI_DECLSPEC  int MPI_Finalize(void);
1664 OMPI_DECLSPEC  int MPI_Finalized(int *flag);
1665 OMPI_DECLSPEC  int MPI_Free_mem(void *base);
1666 OMPI_DECLSPEC  int MPI_Gather(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1667                               void *recvbuf, int recvcount, MPI_Datatype recvtype,
1668                               int root, MPI_Comm comm);
1669 OMPI_DECLSPEC  int MPI_Igather(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1670                                void *recvbuf, int recvcount, MPI_Datatype recvtype,
1671                                int root, MPI_Comm comm, MPI_Request *request);
1672 OMPI_DECLSPEC  int MPI_Gather_init(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1673                                    void *recvbuf, int recvcount, MPI_Datatype recvtype,
1674                                    int root, MPI_Comm comm, MPI_Info info, MPI_Request *request);
1675 OMPI_DECLSPEC  int MPI_Gatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1676                                void *recvbuf, const int recvcounts[], const int displs[],
1677                                MPI_Datatype recvtype, int root, MPI_Comm comm);
1678 OMPI_DECLSPEC  int MPI_Igatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1679                                 void *recvbuf, const int recvcounts[], const int displs[], MPI_Datatype recvtype,
1680                                 int root, MPI_Comm comm, MPI_Request *request);
1681 OMPI_DECLSPEC  int MPI_Gatherv_init(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1682                                     void *recvbuf, const int recvcounts[], const int displs[], MPI_Datatype recvtype,
1683                                     int root, MPI_Comm comm, MPI_Info info, MPI_Request *request);
1684 OMPI_DECLSPEC  int MPI_Get_address(const void *location, MPI_Aint *address);
1685 OMPI_DECLSPEC  int MPI_Get_count(const MPI_Status *status, MPI_Datatype datatype, int *count);
1686 OMPI_DECLSPEC  int MPI_Get_elements(const MPI_Status *status, MPI_Datatype datatype, int *count);
1687 OMPI_DECLSPEC  int MPI_Get_elements_x(const MPI_Status *status, MPI_Datatype datatype, MPI_Count *count);
1688 OMPI_DECLSPEC  int MPI_Get(void *origin_addr, int origin_count,
1689                            MPI_Datatype origin_datatype, int target_rank,
1690                            MPI_Aint target_disp, int target_count,
1691                            MPI_Datatype target_datatype, MPI_Win win);
1692 OMPI_DECLSPEC  int MPI_Get_accumulate(const void *origin_addr, int origin_count, MPI_Datatype origin_datatype,
1693                                       void *result_addr, int result_count, MPI_Datatype result_datatype,
1694                                       int target_rank, MPI_Aint target_disp, int target_count,
1695                                       MPI_Datatype target_datatype, MPI_Op op, MPI_Win win);
1696 OMPI_DECLSPEC  int MPI_Get_library_version(char *version, int *resultlen);
1697 OMPI_DECLSPEC  int MPI_Get_processor_name(char *name, int *resultlen);
1698 OMPI_DECLSPEC  int MPI_Get_version(int *version, int *subversion);
1699 OMPI_DECLSPEC  int MPI_Graph_create(MPI_Comm comm_old, int nnodes, const int index[],
1700                                     const int edges[], int reorder, MPI_Comm *comm_graph);
1701 OMPI_DECLSPEC  int MPI_Graph_get(MPI_Comm comm, int maxindex, int maxedges,
1702                                  int index[], int edges[]);
1703 OMPI_DECLSPEC  int MPI_Graph_map(MPI_Comm comm, int nnodes, const int index[], const int edges[],
1704                                  int *newrank);
1705 OMPI_DECLSPEC  int MPI_Graph_neighbors_count(MPI_Comm comm, int rank, int *nneighbors);
1706 OMPI_DECLSPEC  int MPI_Graph_neighbors(MPI_Comm comm, int rank, int maxneighbors,
1707                                        int neighbors[]);
1708 OMPI_DECLSPEC  int MPI_Graphdims_get(MPI_Comm comm, int *nnodes, int *nedges);
1709 OMPI_DECLSPEC  int MPI_Grequest_complete(MPI_Request request);
1710 OMPI_DECLSPEC  int MPI_Grequest_start(MPI_Grequest_query_function *query_fn,
1711                                       MPI_Grequest_free_function *free_fn,
1712                                       MPI_Grequest_cancel_function *cancel_fn,
1713                                       void *extra_state, MPI_Request *request);
1714 OMPI_DECLSPEC  MPI_Fint MPI_Group_c2f(MPI_Group group);
1715 OMPI_DECLSPEC  int MPI_Group_compare(MPI_Group group1, MPI_Group group2, int *result);
1716 OMPI_DECLSPEC  int MPI_Group_difference(MPI_Group group1, MPI_Group group2,
1717                                         MPI_Group *newgroup);
1718 OMPI_DECLSPEC  int MPI_Group_excl(MPI_Group group, int n, const int ranks[],
1719                                   MPI_Group *newgroup);
1720 OMPI_DECLSPEC  MPI_Group MPI_Group_f2c(MPI_Fint group);
1721 OMPI_DECLSPEC  int MPI_Group_free(MPI_Group *group);
1722 OMPI_DECLSPEC  int MPI_Group_from_session_pset (MPI_Session session, const char *pset_name, MPI_Group *newgroup);
1723 OMPI_DECLSPEC  int MPI_Group_incl(MPI_Group group, int n, const int ranks[],
1724                                   MPI_Group *newgroup);
1725 OMPI_DECLSPEC  int MPI_Group_intersection(MPI_Group group1, MPI_Group group2,
1726                                           MPI_Group *newgroup);
1727 OMPI_DECLSPEC  int MPI_Group_range_excl(MPI_Group group, int n, int ranges[][3],
1728                                         MPI_Group *newgroup);
1729 OMPI_DECLSPEC  int MPI_Group_range_incl(MPI_Group group, int n, int ranges[][3],
1730                                         MPI_Group *newgroup);
1731 OMPI_DECLSPEC  int MPI_Group_rank(MPI_Group group, int *rank);
1732 OMPI_DECLSPEC  int MPI_Group_size(MPI_Group group, int *size);
1733 OMPI_DECLSPEC  int MPI_Group_translate_ranks(MPI_Group group1, int n, const int ranks1[],
1734                                              MPI_Group group2, int ranks2[]);
1735 OMPI_DECLSPEC  int MPI_Group_union(MPI_Group group1, MPI_Group group2,
1736                                    MPI_Group *newgroup);
1737 OMPI_DECLSPEC  int MPI_Ibsend(const void *buf, int count, MPI_Datatype datatype, int dest,
1738                               int tag, MPI_Comm comm, MPI_Request *request);
1739 OMPI_DECLSPEC  int MPI_Improbe(int source, int tag, MPI_Comm comm,
1740                                int *flag, MPI_Message *message,
1741                                MPI_Status *status);
1742 OMPI_DECLSPEC  int MPI_Imrecv(void *buf, int count, MPI_Datatype type,
1743                               MPI_Message *message, MPI_Request *request);
1744 OMPI_DECLSPEC  MPI_Fint MPI_Info_c2f(MPI_Info info);
1745 OMPI_DECLSPEC  int MPI_Info_create(MPI_Info *info);
1746 OMPI_DECLSPEC  int MPI_Info_create_env(int argc, char *argv[], MPI_Info *info);
1747 OMPI_DECLSPEC  int MPI_Info_delete(MPI_Info info, const char *key);
1748 OMPI_DECLSPEC  int MPI_Info_dup(MPI_Info info, MPI_Info *newinfo);
1749 OMPI_DECLSPEC  MPI_Info MPI_Info_f2c(MPI_Fint info);
1750 OMPI_DECLSPEC  int MPI_Info_free(MPI_Info *info);
1751 #if MPI_VERSION < 4
1752 OMPI_DECLSPEC  int MPI_Info_get(MPI_Info info, const char *key, int valuelen,
1753                                 char *value, int *flag);
1754 #endif
1755 OMPI_DECLSPEC  int MPI_Info_get_nkeys(MPI_Info info, int *nkeys);
1756 OMPI_DECLSPEC  int MPI_Info_get_nthkey(MPI_Info info, int n, char *key);
1757 OMPI_DECLSPEC  int MPI_Info_get_string(MPI_Info info, const char *key, int *buflen,
1758                                        char *value, int *flag);
1759 #if MPI_VERSION < 4
1760 OMPI_DECLSPEC  int MPI_Info_get_valuelen(MPI_Info info, const char *key, int *valuelen,
1761                                          int *flag);
1762 #endif
1763 OMPI_DECLSPEC  int MPI_Info_set(MPI_Info info, const char *key, const char *value);
1764 OMPI_DECLSPEC  int MPI_Init(int *argc, char ***argv);
1765 OMPI_DECLSPEC  int MPI_Initialized(int *flag);
1766 OMPI_DECLSPEC  int MPI_Init_thread(int *argc, char ***argv, int required,
1767                                    int *provided);
1768 OMPI_DECLSPEC  int MPI_Intercomm_create(MPI_Comm local_comm, int local_leader,
1769                                         MPI_Comm bridge_comm, int remote_leader,
1770                                         int tag, MPI_Comm *newintercomm);
1771 OMPI_DECLSPEC  int MPI_Intercomm_create_from_groups (MPI_Group local_group, int local_leader, MPI_Group remote_group,
1772                                                      int remote_leader, const char *tag, MPI_Info info, MPI_Errhandler errhandler,
1773                                                      MPI_Comm *newintercomm);
1774 OMPI_DECLSPEC  int MPI_Intercomm_merge(MPI_Comm intercomm, int high,
1775                                        MPI_Comm *newintracomm);
1776 OMPI_DECLSPEC  int MPI_Iprobe(int source, int tag, MPI_Comm comm, int *flag,
1777                               MPI_Status *status);
1778 OMPI_DECLSPEC  int MPI_Irecv(void *buf, int count, MPI_Datatype datatype, int source,
1779                              int tag, MPI_Comm comm, MPI_Request *request);
1780 OMPI_DECLSPEC  int MPI_Irsend(const void *buf, int count, MPI_Datatype datatype, int dest,
1781                               int tag, MPI_Comm comm, MPI_Request *request);
1782 OMPI_DECLSPEC  int MPI_Isend(const void *buf, int count, MPI_Datatype datatype, int dest,
1783                              int tag, MPI_Comm comm, MPI_Request *request);
1784 OMPI_DECLSPEC  int MPI_Isendrecv(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1785                                  int dest, int sendtag, void *recvbuf, int recvcount,
1786                                  MPI_Datatype recvtype, int source, int recvtag,
1787                                  MPI_Comm comm,  MPI_Request *request);
1788 OMPI_DECLSPEC  int MPI_Isendrecv_replace(void * buf, int count, MPI_Datatype datatype,
1789                                          int dest, int sendtag, int source, int recvtag,
1790                                          MPI_Comm comm, MPI_Request *request);
1791 OMPI_DECLSPEC  int MPI_Issend(const void *buf, int count, MPI_Datatype datatype, int dest,
1792                               int tag, MPI_Comm comm, MPI_Request *request);
1793 OMPI_DECLSPEC  int MPI_Is_thread_main(int *flag);
1794 OMPI_DECLSPEC  int MPI_Lookup_name(const char *service_name, MPI_Info info, char *port_name);
1795 OMPI_DECLSPEC  MPI_Fint MPI_Message_c2f(MPI_Message message);
1796 OMPI_DECLSPEC  MPI_Message MPI_Message_f2c(MPI_Fint message);
1797 OMPI_DECLSPEC  int MPI_Mprobe(int source, int tag, MPI_Comm comm,
1798                                MPI_Message *message,
1799                                MPI_Status *status);
1800 OMPI_DECLSPEC  int MPI_Mrecv(void *buf, int count, MPI_Datatype type,
1801                              MPI_Message *message, MPI_Status *status);
1802 OMPI_DECLSPEC  int MPI_Neighbor_allgather(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1803                                           void *recvbuf, int recvcount, MPI_Datatype recvtype,
1804                                           MPI_Comm comm);
1805 OMPI_DECLSPEC  int MPI_Ineighbor_allgather(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1806                                            void *recvbuf, int recvcount, MPI_Datatype recvtype,
1807                                            MPI_Comm comm, MPI_Request *request);
1808 OMPI_DECLSPEC  int MPI_Neighbor_allgatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1809                                            void *recvbuf, const int recvcounts[], const int displs[],
1810                                            MPI_Datatype recvtype, MPI_Comm comm);
1811 OMPI_DECLSPEC  int MPI_Neighbor_allgather_init(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1812                                                void *recvbuf, int recvcount, MPI_Datatype recvtype,
1813                                                MPI_Comm comm, MPI_Info info, MPI_Request *request);
1814 OMPI_DECLSPEC  int MPI_Ineighbor_allgatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1815                                             void *recvbuf, const int recvcounts[], const int displs[], MPI_Datatype recvtype,
1816                                             MPI_Comm comm, MPI_Request *request);
1817 OMPI_DECLSPEC  int MPI_Neighbor_allgatherv_init(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1818                                                 void *recvbuf, const int recvcounts[], const int displs[], MPI_Datatype recvtype,
1819                                                 MPI_Comm comm, MPI_Info info, MPI_Request *request);
1820 OMPI_DECLSPEC  int MPI_Neighbor_alltoall(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1821                                          void *recvbuf, int recvcount, MPI_Datatype recvtype,
1822                                          MPI_Comm comm);
1823 OMPI_DECLSPEC  int MPI_Ineighbor_alltoall(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1824                                           void *recvbuf, int recvcount, MPI_Datatype recvtype,
1825                                           MPI_Comm comm, MPI_Request *request);
1826 OMPI_DECLSPEC  int MPI_Neighbor_alltoall_init(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1827                                               void *recvbuf, int recvcount, MPI_Datatype recvtype,
1828                                               MPI_Comm comm, MPI_Info info, MPI_Request *request);
1829 OMPI_DECLSPEC  int MPI_Neighbor_alltoallv(const void *sendbuf, const int sendcounts[], const int sdispls[],  MPI_Datatype sendtype,
1830                                           void *recvbuf, const int recvcounts[], const int rdispls[], MPI_Datatype recvtype,
1831                                           MPI_Comm comm);
1832 OMPI_DECLSPEC  int MPI_Ineighbor_alltoallv(const void *sendbuf, const int sendcounts[], const int sdispls[], MPI_Datatype sendtype,
1833                                            void *recvbuf, const int recvcounts[], const int rdispls[], MPI_Datatype recvtype,
1834                                            MPI_Comm comm, MPI_Request *request);
1835 OMPI_DECLSPEC  int MPI_Neighbor_alltoallv_init(const void *sendbuf, const int sendcounts[], const int sdispls[], MPI_Datatype sendtype,
1836                                                void *recvbuf, const int recvcounts[], const int rdispls[], MPI_Datatype recvtype,
1837                                                MPI_Comm comm, MPI_Info info, MPI_Request *request);
1838 OMPI_DECLSPEC  int MPI_Neighbor_alltoallw(const void *sendbuf, const int sendcounts[], const MPI_Aint sdispls[], const MPI_Datatype sendtypes[],
1839                                           void *recvbuf, const int recvcounts[], const MPI_Aint rdispls[], const MPI_Datatype recvtypes[],
1840                                           MPI_Comm comm);
1841 OMPI_DECLSPEC  int MPI_Ineighbor_alltoallw(const void *sendbuf, const int sendcounts[], const MPI_Aint sdispls[], const MPI_Datatype sendtypes[],
1842                                            void *recvbuf, const int recvcounts[], const MPI_Aint rdispls[], const MPI_Datatype recvtypes[],
1843                                            MPI_Comm comm, MPI_Request *request);
1844 OMPI_DECLSPEC  int MPI_Neighbor_alltoallw_init(const void *sendbuf, const int sendcounts[], const MPI_Aint sdispls[], const MPI_Datatype sendtypes[],
1845                                                void *recvbuf, const int recvcounts[], const MPI_Aint rdispls[], const MPI_Datatype recvtypes[],
1846                                                MPI_Comm comm, MPI_Info info, MPI_Request *request);
1847 OMPI_DECLSPEC  MPI_Fint MPI_Op_c2f(MPI_Op op);
1848 OMPI_DECLSPEC  int MPI_Op_commutative(MPI_Op op, int *commute);
1849 OMPI_DECLSPEC  int MPI_Op_create(MPI_User_function *function, int commute, MPI_Op *op);
1850 OMPI_DECLSPEC  int MPI_Open_port(MPI_Info info, char *port_name);
1851 OMPI_DECLSPEC  MPI_Op MPI_Op_f2c(MPI_Fint op);
1852 OMPI_DECLSPEC  int MPI_Op_free(MPI_Op *op);
1853 OMPI_DECLSPEC  int MPI_Pack_external(const char datarep[], const void *inbuf, int incount,
1854                                      MPI_Datatype datatype, void *outbuf,
1855                                      MPI_Aint outsize, MPI_Aint *position);
1856 OMPI_DECLSPEC  int MPI_Pack_external_size(const char datarep[], int incount,
1857                                           MPI_Datatype datatype, MPI_Aint *size);
1858 OMPI_DECLSPEC  int MPI_Pack(const void *inbuf, int incount, MPI_Datatype datatype,
1859                             void *outbuf, int outsize, int *position, MPI_Comm comm);
1860 OMPI_DECLSPEC  int MPI_Pack_size(int incount, MPI_Datatype datatype, MPI_Comm comm,
1861                                  int *size);
1862 OMPI_DECLSPEC  int MPI_Parrived(MPI_Request request, int partition, int *flag);
1863 OMPI_DECLSPEC  int MPI_Pcontrol(const int level, ...);
1864 OMPI_DECLSPEC  int MPI_Pready(int partitions, MPI_Request request);
1865 OMPI_DECLSPEC  int MPI_Pready_range(int partition_low, int partition_high,
1866                                     MPI_Request request);
1867 OMPI_DECLSPEC  int MPI_Pready_list(int length, int partition_list[], MPI_Request request);
1868 OMPI_DECLSPEC  int MPI_Precv_init(void* buf, int partitions, MPI_Count count,
1869                                   MPI_Datatype datatype, int source, int tag, MPI_Comm comm,
1870                                   MPI_Info info, MPI_Request *request);
1871 OMPI_DECLSPEC  int MPI_Probe(int source, int tag, MPI_Comm comm, MPI_Status *status);
1872 OMPI_DECLSPEC  int MPI_Psend_init(const void* buf, int partitions, MPI_Count count,
1873                                   MPI_Datatype datatype, int dest, int tag, MPI_Comm comm,
1874                                   MPI_Info info, MPI_Request *request);
1875 OMPI_DECLSPEC  int MPI_Publish_name(const char *service_name, MPI_Info info,
1876                                     const char *port_name);
1877 OMPI_DECLSPEC  int MPI_Put(const void *origin_addr, int origin_count, MPI_Datatype origin_datatype,
1878                            int target_rank, MPI_Aint target_disp, int target_count,
1879                            MPI_Datatype target_datatype, MPI_Win win);
1880 OMPI_DECLSPEC  int MPI_Query_thread(int *provided);
1881 OMPI_DECLSPEC  int MPI_Raccumulate(const void *origin_addr, int origin_count, MPI_Datatype origin_datatype,
1882                                    int target_rank, MPI_Aint target_disp, int target_count,
1883                                    MPI_Datatype target_datatype, MPI_Op op, MPI_Win win, MPI_Request *request);
1884 OMPI_DECLSPEC  int MPI_Recv_init(void *buf, int count, MPI_Datatype datatype, int source,
1885                                  int tag, MPI_Comm comm, MPI_Request *request);
1886 OMPI_DECLSPEC  int MPI_Recv(void *buf, int count, MPI_Datatype datatype, int source,
1887                             int tag, MPI_Comm comm, MPI_Status *status);
1888 OMPI_DECLSPEC  int MPI_Reduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
1889                               MPI_Op op, int root, MPI_Comm comm);
1890 OMPI_DECLSPEC  int MPI_Ireduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
1891                                MPI_Op op, int root, MPI_Comm comm, MPI_Request *request);
1892 OMPI_DECLSPEC  int MPI_Reduce_init(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
1893                                    MPI_Op op, int root, MPI_Comm comm, MPI_Info info, MPI_Request *request);
1894 OMPI_DECLSPEC  int MPI_Reduce_local(const void *inbuf, void *inoutbuf, int count,
1895                                     MPI_Datatype datatype, MPI_Op op);
1896 OMPI_DECLSPEC  int MPI_Reduce_scatter(const void *sendbuf, void *recvbuf, const int recvcounts[], MPI_Datatype datatype,
1897                                       MPI_Op op, MPI_Comm comm);
1898 OMPI_DECLSPEC  int MPI_Ireduce_scatter(const void *sendbuf, void *recvbuf, const int recvcounts[], MPI_Datatype datatype,
1899                                        MPI_Op op, MPI_Comm comm, MPI_Request *request);
1900 OMPI_DECLSPEC  int MPI_Reduce_scatter_init(const void *sendbuf, void *recvbuf, const int recvcounts[], MPI_Datatype datatype,
1901                                            MPI_Op op, MPI_Comm comm, MPI_Info info, MPI_Request *request);
1902 OMPI_DECLSPEC  int MPI_Reduce_scatter_block(const void *sendbuf, void *recvbuf, int recvcount, MPI_Datatype datatype,
1903                                             MPI_Op op, MPI_Comm comm);
1904 OMPI_DECLSPEC  int MPI_Ireduce_scatter_block(const void *sendbuf, void *recvbuf, int recvcount, MPI_Datatype datatype,
1905                                              MPI_Op op, MPI_Comm comm, MPI_Request *request);
1906 OMPI_DECLSPEC  int MPI_Reduce_scatter_block_init(const void *sendbuf, void *recvbuf, int recvcount, MPI_Datatype datatype,
1907                                                  MPI_Op op, MPI_Comm comm, MPI_Info info, MPI_Request *request);
1908 OMPI_DECLSPEC  int MPI_Register_datarep(const char *datarep,
1909                                         MPI_Datarep_conversion_function *read_conversion_fn,
1910                                         MPI_Datarep_conversion_function *write_conversion_fn,
1911                                         MPI_Datarep_extent_function *dtype_file_extent_fn,
1912                                         void *extra_state);
1913 OMPI_DECLSPEC  MPI_Fint MPI_Request_c2f(MPI_Request request);
1914 OMPI_DECLSPEC  MPI_Request MPI_Request_f2c(MPI_Fint request);
1915 OMPI_DECLSPEC  int MPI_Request_free(MPI_Request *request);
1916 OMPI_DECLSPEC  int MPI_Request_get_status(MPI_Request request, int *flag,
1917                                           MPI_Status *status);
1918 OMPI_DECLSPEC  int MPI_Rget(void *origin_addr, int origin_count, MPI_Datatype origin_datatype,
1919                             int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype,
1920                             MPI_Win win, MPI_Request *request);
1921 OMPI_DECLSPEC  int MPI_Rget_accumulate(const void *origin_addr, int origin_count, MPI_Datatype origin_datatype,
1922                                        void *result_addr, int result_count, MPI_Datatype result_datatype,
1923                                        int target_rank, MPI_Aint target_disp, int target_count,
1924                                        MPI_Datatype target_datatype, MPI_Op op,
1925                                        MPI_Win win, MPI_Request *request);
1926 OMPI_DECLSPEC  int MPI_Rput(const void *origin_addr, int origin_count, MPI_Datatype origin_datatype,
1927                             int target_rank, MPI_Aint target_disp, int target_cout,
1928                             MPI_Datatype target_datatype, MPI_Win win, MPI_Request *request);
1929 OMPI_DECLSPEC  int MPI_Rsend(const void *ibuf, int count, MPI_Datatype datatype, int dest,
1930                              int tag, MPI_Comm comm);
1931 OMPI_DECLSPEC  int MPI_Rsend_init(const void *buf, int count, MPI_Datatype datatype,
1932                                   int dest, int tag, MPI_Comm comm,
1933                                   MPI_Request *request);
1934 OMPI_DECLSPEC  int MPI_Scan(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
1935                             MPI_Op op, MPI_Comm comm);
1936 OMPI_DECLSPEC  int MPI_Iscan(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
1937                              MPI_Op op, MPI_Comm comm, MPI_Request *request);
1938 OMPI_DECLSPEC  int MPI_Scan_init(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
1939                                  MPI_Op op, MPI_Comm comm, MPI_Info info, MPI_Request *request);
1940 OMPI_DECLSPEC  int MPI_Scatter(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1941                                void *recvbuf, int recvcount, MPI_Datatype recvtype,
1942                                int root, MPI_Comm comm);
1943 OMPI_DECLSPEC  int MPI_Iscatter(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1944                                 void *recvbuf, int recvcount, MPI_Datatype recvtype,
1945                                 int root, MPI_Comm comm, MPI_Request *request);
1946 OMPI_DECLSPEC  int MPI_Scatter_init(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1947                                     void *recvbuf, int recvcount, MPI_Datatype recvtype,
1948                                     int root, MPI_Comm comm, MPI_Info info, MPI_Request *request);
1949 OMPI_DECLSPEC  int MPI_Scatterv(const void *sendbuf, const int sendcounts[], const int displs[], MPI_Datatype sendtype,
1950                                 void *recvbuf, int recvcount, MPI_Datatype recvtype,
1951                                 int root, MPI_Comm comm);
1952 OMPI_DECLSPEC  int MPI_Iscatterv(const void *sendbuf, const int sendcounts[], const int displs[], MPI_Datatype sendtype,
1953                                  void *recvbuf, int recvcount, MPI_Datatype recvtype,
1954                                  int root, MPI_Comm comm, MPI_Request *request);
1955 OMPI_DECLSPEC  int MPI_Scatterv_init(const void *sendbuf, const int sendcounts[], const int displs[], MPI_Datatype sendtype,
1956                                      void *recvbuf, int recvcount, MPI_Datatype recvtype,
1957                                      int root, MPI_Comm comm, MPI_Info info, MPI_Request *request);
1958 OMPI_DECLSPEC  int MPI_Send_init(const void *buf, int count, MPI_Datatype datatype,
1959                                  int dest, int tag, MPI_Comm comm,
1960                                  MPI_Request *request);
1961 OMPI_DECLSPEC  int MPI_Send(const void *buf, int count, MPI_Datatype datatype, int dest,
1962                             int tag, MPI_Comm comm);
1963 OMPI_DECLSPEC  int MPI_Sendrecv(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
1964                                 int dest, int sendtag, void *recvbuf, int recvcount,
1965                                 MPI_Datatype recvtype, int source, int recvtag,
1966                                 MPI_Comm comm,  MPI_Status *status);
1967 OMPI_DECLSPEC  int MPI_Sendrecv_replace(void * buf, int count, MPI_Datatype datatype,
1968                                         int dest, int sendtag, int source, int recvtag,
1969                                         MPI_Comm comm, MPI_Status *status);
1970 OMPI_DECLSPEC  MPI_Fint MPI_Session_c2f (const MPI_Session session);
1971 OMPI_DECLSPEC  int MPI_Session_call_errhandler(MPI_Session session, int errorcode);
1972 OMPI_DECLSPEC  int MPI_Session_create_errhandler (MPI_Session_errhandler_function *session_errhandler_fn,
1973                                                   MPI_Errhandler *errhandler);
1974 OMPI_DECLSPEC  int MPI_Session_finalize (MPI_Session *session);
1975 OMPI_DECLSPEC  int MPI_Session_get_errhandler(MPI_Session session, MPI_Errhandler *erhandler);
1976 OMPI_DECLSPEC  int MPI_Session_get_info (MPI_Session session, MPI_Info *info_used);
1977 OMPI_DECLSPEC  int MPI_Session_get_num_psets (MPI_Session session, MPI_Info info, int *npset_names);
1978 OMPI_DECLSPEC  int MPI_Session_get_nth_pset (MPI_Session session, MPI_Info info, int n, int *len, char *pset_name);
1979 OMPI_DECLSPEC  int MPI_Session_get_pset_info (MPI_Session session, const char *pset_name, MPI_Info *info_used);
1980 OMPI_DECLSPEC  int MPI_Session_init (MPI_Info info, MPI_Errhandler errhandler,
1981                                      MPI_Session *session);
1982 OMPI_DECLSPEC  MPI_Session MPI_Session_f2c (MPI_Fint session);
1983 OMPI_DECLSPEC  int MPI_Session_set_errhandler(MPI_Session session, MPI_Errhandler errhandler);
1984 OMPI_DECLSPEC  int MPI_Session_set_info (MPI_Session session, MPI_Info info);
1985 OMPI_DECLSPEC  int MPI_Ssend_init(const void *buf, int count, MPI_Datatype datatype,
1986                                   int dest, int tag, MPI_Comm comm,
1987                                   MPI_Request *request);
1988 OMPI_DECLSPEC  int MPI_Ssend(const void *buf, int count, MPI_Datatype datatype, int dest,
1989                              int tag, MPI_Comm comm);
1990 OMPI_DECLSPEC  int MPI_Start(MPI_Request *request);
1991 OMPI_DECLSPEC  int MPI_Startall(int count, MPI_Request array_of_requests[]);
1992 OMPI_DECLSPEC  int MPI_Status_c2f(const MPI_Status *c_status, MPI_Fint *f_status);
1993 OMPI_DECLSPEC  int MPI_Status_c2f08(const MPI_Status *c_status, MPI_F08_status *f08_status);
1994 OMPI_DECLSPEC  int MPI_Status_f082c(const MPI_F08_status *f08_status, MPI_Status *c_status);
1995 OMPI_DECLSPEC  int MPI_Status_f082f(const MPI_F08_status *f08_status, MPI_Fint *f_status);
1996 OMPI_DECLSPEC  int MPI_Status_f2c(const MPI_Fint *f_status, MPI_Status *c_status);
1997 OMPI_DECLSPEC  int MPI_Status_f2f08(const MPI_Fint *f_status, MPI_F08_status *f08_status);
1998 OMPI_DECLSPEC  int MPI_Status_set_cancelled(MPI_Status *status, int flag);
1999 OMPI_DECLSPEC  int MPI_Status_set_elements(MPI_Status *status, MPI_Datatype datatype,
2000                                            int count);
2001 OMPI_DECLSPEC  int MPI_Status_set_elements_x(MPI_Status *status, MPI_Datatype datatype,
2002                                              MPI_Count count);
2003 OMPI_DECLSPEC  int MPI_Testall(int count, MPI_Request array_of_requests[], int *flag,
2004                                MPI_Status array_of_statuses[]);
2005 OMPI_DECLSPEC  int MPI_Testany(int count, MPI_Request array_of_requests[], int *index,
2006                                int *flag, MPI_Status *status);
2007 OMPI_DECLSPEC  int MPI_Test(MPI_Request *request, int *flag, MPI_Status *status);
2008 OMPI_DECLSPEC  int MPI_Test_cancelled(const MPI_Status *status, int *flag);
2009 OMPI_DECLSPEC  int MPI_Testsome(int incount, MPI_Request array_of_requests[],
2010                                 int *outcount, int array_of_indices[],
2011                                 MPI_Status array_of_statuses[]);
2012 OMPI_DECLSPEC  int MPI_Topo_test(MPI_Comm comm, int *status);
2013 OMPI_DECLSPEC  MPI_Fint MPI_Type_c2f(MPI_Datatype datatype);
2014 OMPI_DECLSPEC  int MPI_Type_commit(MPI_Datatype *type);
2015 OMPI_DECLSPEC  int MPI_Type_contiguous(int count, MPI_Datatype oldtype,
2016                                        MPI_Datatype *newtype);
2017 OMPI_DECLSPEC  int MPI_Type_create_darray(int size, int rank, int ndims,
2018                                           const int gsize_array[], const int distrib_array[],
2019                                           const int darg_array[], const int psize_array[],
2020                                           int order, MPI_Datatype oldtype,
2021                                           MPI_Datatype *newtype);
2022 OMPI_DECLSPEC  int MPI_Type_create_f90_complex(int p, int r, MPI_Datatype *newtype);
2023 OMPI_DECLSPEC  int MPI_Type_create_f90_integer(int r, MPI_Datatype *newtype);
2024 OMPI_DECLSPEC  int MPI_Type_create_f90_real(int p, int r, MPI_Datatype *newtype);
2025 OMPI_DECLSPEC  int MPI_Type_create_hindexed_block(int count, int blocklength,
2026                                                   const MPI_Aint array_of_displacements[],
2027                                                   MPI_Datatype oldtype,
2028                                                   MPI_Datatype *newtype);
2029 OMPI_DECLSPEC  int MPI_Type_create_hindexed(int count, const int array_of_blocklengths[],
2030                                             const MPI_Aint array_of_displacements[],
2031                                             MPI_Datatype oldtype,
2032                                             MPI_Datatype *newtype);
2033 OMPI_DECLSPEC  int MPI_Type_create_hvector(int count, int blocklength, MPI_Aint stride,
2034                                            MPI_Datatype oldtype,
2035                                            MPI_Datatype *newtype);
2036 OMPI_DECLSPEC  int MPI_Type_create_keyval(MPI_Type_copy_attr_function *type_copy_attr_fn,
2037                                           MPI_Type_delete_attr_function *type_delete_attr_fn,
2038                                           int *type_keyval, void *extra_state);
2039 OMPI_DECLSPEC  int MPI_Type_create_indexed_block(int count, int blocklength,
2040                                                  const int array_of_displacements[],
2041                                                  MPI_Datatype oldtype,
2042                                                  MPI_Datatype *newtype);
2043 OMPI_DECLSPEC  int MPI_Type_create_struct(int count, const int array_of_block_lengths[],
2044                                           const MPI_Aint array_of_displacements[],
2045                                           const MPI_Datatype array_of_types[],
2046                                           MPI_Datatype *newtype);
2047 OMPI_DECLSPEC  int MPI_Type_create_subarray(int ndims, const int size_array[], const int subsize_array[],
2048                                             const int start_array[], int order,
2049                                             MPI_Datatype oldtype, MPI_Datatype *newtype);
2050 OMPI_DECLSPEC  int MPI_Type_create_resized(MPI_Datatype oldtype, MPI_Aint lb,
2051                                            MPI_Aint extent, MPI_Datatype *newtype);
2052 OMPI_DECLSPEC  int MPI_Type_delete_attr(MPI_Datatype type, int type_keyval);
2053 OMPI_DECLSPEC  int MPI_Type_dup(MPI_Datatype type, MPI_Datatype *newtype);
2054 OMPI_DECLSPEC  int MPI_Type_free(MPI_Datatype *type);
2055 OMPI_DECLSPEC  int MPI_Type_free_keyval(int *type_keyval);
2056 OMPI_DECLSPEC  MPI_Datatype MPI_Type_f2c(MPI_Fint datatype);
2057 OMPI_DECLSPEC  int MPI_Type_get_attr(MPI_Datatype type, int type_keyval,
2058                                      void *attribute_val, int *flag);
2059 OMPI_DECLSPEC  int MPI_Type_get_contents(MPI_Datatype mtype, int max_integers,
2060                                          int max_addresses, int max_datatypes,
2061                                          int array_of_integers[],
2062                                          MPI_Aint array_of_addresses[],
2063                                          MPI_Datatype array_of_datatypes[]);
2064 OMPI_DECLSPEC  int MPI_Type_get_envelope(MPI_Datatype type, int *num_integers,
2065                                          int *num_addresses, int *num_datatypes,
2066                                          int *combiner);
2067 OMPI_DECLSPEC  int MPI_Type_get_extent(MPI_Datatype type, MPI_Aint *lb,
2068                                        MPI_Aint *extent);
2069 OMPI_DECLSPEC  int MPI_Type_get_extent_x(MPI_Datatype type, MPI_Count *lb,
2070                                          MPI_Count *extent);
2071 OMPI_DECLSPEC  int MPI_Type_get_name(MPI_Datatype type, char *type_name,
2072                                      int *resultlen);
2073 OMPI_DECLSPEC  int MPI_Type_get_true_extent(MPI_Datatype datatype, MPI_Aint *true_lb,
2074                                             MPI_Aint *true_extent);
2075 OMPI_DECLSPEC  int MPI_Type_get_true_extent_x(MPI_Datatype datatype, MPI_Count *true_lb,
2076                                               MPI_Count *true_extent);
2077 OMPI_DECLSPEC  int MPI_Type_indexed(int count, const int array_of_blocklengths[],
2078                                     const int array_of_displacements[],
2079                                     MPI_Datatype oldtype, MPI_Datatype *newtype);
2080 OMPI_DECLSPEC  int MPI_Type_match_size(int typeclass, int size, MPI_Datatype *type);
2081 OMPI_DECLSPEC  int MPI_Type_set_attr(MPI_Datatype type, int type_keyval,
2082                                      void *attr_val);
2083 OMPI_DECLSPEC  int MPI_Type_set_name(MPI_Datatype type, const char *type_name);
2084 OMPI_DECLSPEC  int MPI_Type_size(MPI_Datatype type, int *size);
2085 OMPI_DECLSPEC  int MPI_Type_size_x(MPI_Datatype type, MPI_Count *size);
2086 OMPI_DECLSPEC  int MPI_Type_vector(int count, int blocklength, int stride,
2087                                    MPI_Datatype oldtype, MPI_Datatype *newtype);
2088 OMPI_DECLSPEC  int MPI_Unpack(const void *inbuf, int insize, int *position,
2089                               void *outbuf, int outcount, MPI_Datatype datatype,
2090                               MPI_Comm comm);
2091 OMPI_DECLSPEC  int MPI_Unpublish_name(const char *service_name, MPI_Info info, const char *port_name);
2092 OMPI_DECLSPEC  int MPI_Unpack_external (const char datarep[], const void *inbuf, MPI_Aint insize,
2093                                         MPI_Aint *position, void *outbuf, int outcount,
2094                                         MPI_Datatype datatype);
2095 OMPI_DECLSPEC  int MPI_Waitall(int count, MPI_Request array_of_requests[],
2096                                MPI_Status *array_of_statuses);
2097 OMPI_DECLSPEC  int MPI_Waitany(int count, MPI_Request array_of_requests[],
2098                                int *index, MPI_Status *status);
2099 OMPI_DECLSPEC  int MPI_Wait(MPI_Request *request, MPI_Status *status);
2100 OMPI_DECLSPEC  int MPI_Waitsome(int incount, MPI_Request array_of_requests[],
2101                                 int *outcount, int array_of_indices[],
2102                                 MPI_Status array_of_statuses[]);
2103 OMPI_DECLSPEC  int MPI_Win_allocate(MPI_Aint size, int disp_unit, MPI_Info info,
2104                                     MPI_Comm comm, void *baseptr, MPI_Win *win);
2105 OMPI_DECLSPEC  int MPI_Win_allocate_shared(MPI_Aint size, int disp_unit, MPI_Info info,
2106                                            MPI_Comm comm, void *baseptr, MPI_Win *win);
2107 OMPI_DECLSPEC  int MPI_Win_attach(MPI_Win win, void *base, MPI_Aint size);
2108 OMPI_DECLSPEC  MPI_Fint MPI_Win_c2f(MPI_Win win);
2109 OMPI_DECLSPEC  int MPI_Win_call_errhandler(MPI_Win win, int errorcode);
2110 OMPI_DECLSPEC  int MPI_Win_complete(MPI_Win win);
2111 OMPI_DECLSPEC  int MPI_Win_create(void *base, MPI_Aint size, int disp_unit,
2112                                   MPI_Info info, MPI_Comm comm, MPI_Win *win);
2113 OMPI_DECLSPEC  int MPI_Win_create_dynamic(MPI_Info info, MPI_Comm comm, MPI_Win *win);
2114 OMPI_DECLSPEC  int MPI_Win_create_errhandler(MPI_Win_errhandler_function *function,
2115                                              MPI_Errhandler *errhandler);
2116 OMPI_DECLSPEC  int MPI_Win_create_keyval(MPI_Win_copy_attr_function *win_copy_attr_fn,
2117                                          MPI_Win_delete_attr_function *win_delete_attr_fn,
2118                                          int *win_keyval, void *extra_state);
2119 OMPI_DECLSPEC  int MPI_Win_delete_attr(MPI_Win win, int win_keyval);
2120 OMPI_DECLSPEC  int MPI_Win_detach(MPI_Win win, const void *base);
2121 OMPI_DECLSPEC  MPI_Win MPI_Win_f2c(MPI_Fint win);
2122 OMPI_DECLSPEC  int MPI_Win_fence(int mpi_assert, MPI_Win win);
2123 OMPI_DECLSPEC  int MPI_Win_flush(int rank, MPI_Win win);
2124 OMPI_DECLSPEC  int MPI_Win_flush_all(MPI_Win win);
2125 OMPI_DECLSPEC  int MPI_Win_flush_local(int rank, MPI_Win win);
2126 OMPI_DECLSPEC  int MPI_Win_flush_local_all(MPI_Win win);
2127 OMPI_DECLSPEC  int MPI_Win_free(MPI_Win *win);
2128 OMPI_DECLSPEC  int MPI_Win_free_keyval(int *win_keyval);
2129 OMPI_DECLSPEC  int MPI_Win_get_attr(MPI_Win win, int win_keyval,
2130                                     void *attribute_val, int *flag);
2131 OMPI_DECLSPEC  int MPI_Win_get_errhandler(MPI_Win win, MPI_Errhandler *errhandler);
2132 OMPI_DECLSPEC  int MPI_Win_get_group(MPI_Win win, MPI_Group *group);
2133 OMPI_DECLSPEC  int MPI_Win_get_info(MPI_Win win, MPI_Info *info_used);
2134 OMPI_DECLSPEC  int MPI_Win_get_name(MPI_Win win, char *win_name, int *resultlen);
2135 OMPI_DECLSPEC  int MPI_Win_lock(int lock_type, int rank, int mpi_assert, MPI_Win win);
2136 OMPI_DECLSPEC  int MPI_Win_lock_all(int mpi_assert, MPI_Win win);
2137 OMPI_DECLSPEC  int MPI_Win_post(MPI_Group group, int mpi_assert, MPI_Win win);
2138 OMPI_DECLSPEC  int MPI_Win_set_attr(MPI_Win win, int win_keyval, void *attribute_val);
2139 OMPI_DECLSPEC  int MPI_Win_set_errhandler(MPI_Win win, MPI_Errhandler errhandler);
2140 OMPI_DECLSPEC  int MPI_Win_set_info(MPI_Win win, MPI_Info info);
2141 OMPI_DECLSPEC  int MPI_Win_set_name(MPI_Win win, const char *win_name);
2142 OMPI_DECLSPEC  int MPI_Win_shared_query(MPI_Win win, int rank, MPI_Aint *size, int *disp_unit, void *baseptr);
2143 OMPI_DECLSPEC  int MPI_Win_start(MPI_Group group, int mpi_assert, MPI_Win win);
2144 OMPI_DECLSPEC  int MPI_Win_sync(MPI_Win win);
2145 OMPI_DECLSPEC  int MPI_Win_test(MPI_Win win, int *flag);
2146 OMPI_DECLSPEC  int MPI_Win_unlock(int rank, MPI_Win win);
2147 OMPI_DECLSPEC  int MPI_Win_unlock_all(MPI_Win win);
2148 OMPI_DECLSPEC  int MPI_Win_wait(MPI_Win win);
2149 OMPI_DECLSPEC  double MPI_Wtick(void);
2150 OMPI_DECLSPEC  double MPI_Wtime(void);
2151 
2152   /*
2153    * Profiling MPI API
2154    */
2155 OMPI_DECLSPEC  int PMPI_Abort(MPI_Comm comm, int errorcode);
2156 OMPI_DECLSPEC  int PMPI_Accumulate(const void *origin_addr, int origin_count, MPI_Datatype origin_datatype,
2157                                    int target_rank, MPI_Aint target_disp, int target_count,
2158                                    MPI_Datatype target_datatype, MPI_Op op, MPI_Win win);
2159 OMPI_DECLSPEC  int PMPI_Add_error_class(int *errorclass);
2160 OMPI_DECLSPEC  int PMPI_Add_error_code(int errorclass, int *errorcode);
2161 OMPI_DECLSPEC  int PMPI_Add_error_string(int errorcode, const char *string);
2162 OMPI_DECLSPEC  int PMPI_Allgather(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2163                                   void *recvbuf, int recvcount,
2164                                   MPI_Datatype recvtype, MPI_Comm comm);
2165 OMPI_DECLSPEC  int PMPI_Iallgather(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2166                                    void *recvbuf, int recvcount,
2167                                    MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request);
2168 OMPI_DECLSPEC  int PMPI_Allgather_init(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2169                                        void *recvbuf, int recvcount, MPI_Datatype recvtype,
2170                                        MPI_Comm comm, MPI_Info info, MPI_Request *request);
2171 OMPI_DECLSPEC  int PMPI_Allgatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2172                                    void *recvbuf, const int recvcounts[],
2173                                    const int displs[], MPI_Datatype recvtype, MPI_Comm comm);
2174 OMPI_DECLSPEC  int PMPI_Iallgatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2175                                     void *recvbuf, const int recvcounts[], const int displs[], MPI_Datatype recvtype,
2176                                     MPI_Comm comm, MPI_Request *request);
2177 OMPI_DECLSPEC  int PMPI_Allgatherv_init(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2178                                         void *recvbuf, const int recvcounts[], const int displs[], MPI_Datatype recvtype,
2179                                         MPI_Comm comm, MPI_Info info, MPI_Request *request);
2180 OMPI_DECLSPEC  int PMPI_Alloc_mem(MPI_Aint size, MPI_Info info,
2181                                   void *baseptr);
2182 OMPI_DECLSPEC  int PMPI_Allreduce(const void *sendbuf, void *recvbuf, int count,
2183                                   MPI_Datatype datatype, MPI_Op op, MPI_Comm comm);
2184 OMPI_DECLSPEC  int PMPI_Iallreduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
2185                                    MPI_Op op, MPI_Comm comm, MPI_Request *request);
2186 OMPI_DECLSPEC  int PMPI_Allreduce_init(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
2187                                        MPI_Op op, MPI_Comm comm, MPI_Info info, MPI_Request *request);
2188 OMPI_DECLSPEC  int PMPI_Alltoall(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2189                                  void *recvbuf, int recvcount,
2190                                  MPI_Datatype recvtype, MPI_Comm comm);
2191 OMPI_DECLSPEC  int PMPI_Ialltoall(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2192                                   void *recvbuf, int recvcount, MPI_Datatype recvtype,
2193                                   MPI_Comm comm, MPI_Request *request);
2194 OMPI_DECLSPEC  int PMPI_Alltoall_init(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2195                                   void *recvbuf, int recvcount, MPI_Datatype recvtype,
2196                                   MPI_Comm comm, MPI_Info info, MPI_Request *request);
2197 OMPI_DECLSPEC  int PMPI_Alltoallv(const void *sendbuf, const int sendcounts[], const int sdispls[], MPI_Datatype sendtype,
2198                                   void *recvbuf, const int recvcounts[], const int rdispls[], MPI_Datatype recvtype,
2199                                   MPI_Comm comm);
2200 OMPI_DECLSPEC  int PMPI_Ialltoallv(const void *sendbuf, const int sendcounts[], const int sdispls[], MPI_Datatype sendtype,
2201                                    void *recvbuf, const int recvcounts[], const int rdispls[], MPI_Datatype recvtype,
2202                                    MPI_Comm comm, MPI_Request *request);
2203 OMPI_DECLSPEC  int PMPI_Alltoallv_init(const void *sendbuf, const int sendcounts[], const int sdispls[], MPI_Datatype sendtype,
2204                                        void *recvbuf, const int recvcounts[], const int rdispls[], MPI_Datatype recvtype,
2205                                        MPI_Comm comm, MPI_Info info, MPI_Request *request);
2206 OMPI_DECLSPEC  int PMPI_Alltoallw(const void *sendbuf, const int sendcounts[], const int sdispls[], const MPI_Datatype sendtypes[],
2207                                   void *recvbuf, const int recvcounts[], const int rdispls[], const MPI_Datatype recvtypes[],
2208                                   MPI_Comm comm);
2209 OMPI_DECLSPEC  int PMPI_Ialltoallw(const void *sendbuf, const int sendcounts[], const int sdispls[], const MPI_Datatype sendtypes[],
2210                                    void *recvbuf, const int recvcounts[], const int rdispls[], const MPI_Datatype recvtypes[],
2211                                    MPI_Comm comm, MPI_Request *request);
2212 OMPI_DECLSPEC  int PMPI_Alltoallw_init(const void *sendbuf, const int sendcounts[], const int sdispls[], const MPI_Datatype sendtypes[],
2213                                        void *recvbuf, const int recvcounts[], const int rdispls[], const MPI_Datatype recvtypes[],
2214                                        MPI_Comm comm, MPI_Info info, MPI_Request *request);
2215 OMPI_DECLSPEC  int PMPI_Dist_graph_create(MPI_Comm comm_old, int n, const int nodes[],
2216                                           const int degrees[], const int targets[],
2217                                           const int weights[], MPI_Info info,
2218                                           int reorder, MPI_Comm * newcomm);
2219 OMPI_DECLSPEC  int PMPI_Dist_graph_create_adjacent(MPI_Comm comm_old,
2220                                                    int indegree, const int sources[],
2221                                                    const int sourceweights[],
2222                                                    int outdegree,
2223                                                    const int destinations[],
2224                                                    const int destweights[],
2225                                                    MPI_Info info, int reorder,
2226                                                    MPI_Comm *comm_dist_graph);
2227 OMPI_DECLSPEC int PMPI_Dist_graph_neighbors(MPI_Comm comm, int maxindegree,
2228                                             int sources[], int sourceweights[],
2229                                             int maxoutdegree,
2230                                              int destinations[],
2231                                             int destweights[]);
2232 OMPI_DECLSPEC  int PMPI_Dist_graph_neighbors_count(MPI_Comm comm,
2233                                                    int *inneighbors,
2234                                                    int *outneighbors,
2235                                                    int *weighted);
2236 OMPI_DECLSPEC  int PMPI_Barrier(MPI_Comm comm);
2237 OMPI_DECLSPEC  int PMPI_Ibarrier(MPI_Comm comm, MPI_Request *request);
2238 OMPI_DECLSPEC  int PMPI_Barrier_init(MPI_Comm comm, MPI_Info info, MPI_Request *request);
2239 OMPI_DECLSPEC  int PMPI_Bcast(void *buffer, int count, MPI_Datatype datatype,
2240                               int root, MPI_Comm comm);
2241 OMPI_DECLSPEC  int PMPI_Ibcast(void *buffer, int count, MPI_Datatype datatype,
2242                                int root, MPI_Comm comm, MPI_Request *request);
2243 OMPI_DECLSPEC  int PMPI_Bcast_init(void *buffer, int count, MPI_Datatype datatype,
2244                                    int root, MPI_Comm comm, MPI_Info info, MPI_Request *request);
2245 OMPI_DECLSPEC  int PMPI_Bsend(const void *buf, int count, MPI_Datatype datatype,
2246                               int dest, int tag, MPI_Comm comm);
2247 OMPI_DECLSPEC  int PMPI_Bsend_init(const void *buf, int count, MPI_Datatype datatype,
2248                                    int dest, int tag, MPI_Comm comm, MPI_Request *request);
2249 OMPI_DECLSPEC  int PMPI_Buffer_attach(void *buffer, int size);
2250 OMPI_DECLSPEC  int PMPI_Buffer_detach(void *buffer, int *size);
2251 OMPI_DECLSPEC  int PMPI_Cancel(MPI_Request *request);
2252 OMPI_DECLSPEC  int PMPI_Cart_coords(MPI_Comm comm, int rank, int maxdims, int coords[]);
2253 OMPI_DECLSPEC  int PMPI_Cart_create(MPI_Comm old_comm, int ndims, const int dims[],
2254                                     const int periods[], int reorder, MPI_Comm *comm_cart);
2255 OMPI_DECLSPEC  int PMPI_Cart_get(MPI_Comm comm, int maxdims, int dims[],
2256                                  int periods[], int coords[]);
2257 OMPI_DECLSPEC  int PMPI_Cart_map(MPI_Comm comm, int ndims, const int dims[],
2258                                  const int periods[], int *newrank);
2259 OMPI_DECLSPEC  int PMPI_Cart_rank(MPI_Comm comm, const int coords[], int *rank);
2260 OMPI_DECLSPEC  int PMPI_Cart_shift(MPI_Comm comm, int direction, int disp,
2261                                    int *rank_source, int *rank_dest);
2262 OMPI_DECLSPEC  int PMPI_Cart_sub(MPI_Comm comm, const int remain_dims[], MPI_Comm *new_comm);
2263 OMPI_DECLSPEC  int PMPI_Cartdim_get(MPI_Comm comm, int *ndims);
2264 OMPI_DECLSPEC  int PMPI_Close_port(const char *port_name);
2265 OMPI_DECLSPEC  int PMPI_Comm_accept(const char *port_name, MPI_Info info, int root,
2266                                     MPI_Comm comm, MPI_Comm *newcomm);
2267 OMPI_DECLSPEC  MPI_Fint PMPI_Comm_c2f(MPI_Comm comm);
2268 OMPI_DECLSPEC  int PMPI_Comm_call_errhandler(MPI_Comm comm, int errorcode);
2269 OMPI_DECLSPEC  int PMPI_Comm_compare(MPI_Comm comm1, MPI_Comm comm2, int *result);
2270 OMPI_DECLSPEC  int PMPI_Comm_connect(const char *port_name, MPI_Info info, int root,
2271                                      MPI_Comm comm, MPI_Comm *newcomm);
2272 OMPI_DECLSPEC  int PMPI_Comm_create_errhandler(MPI_Comm_errhandler_function *function,
2273                                                MPI_Errhandler *errhandler);
2274 OMPI_DECLSPEC  int PMPI_Comm_create_keyval(MPI_Comm_copy_attr_function *comm_copy_attr_fn,
2275                                            MPI_Comm_delete_attr_function *comm_delete_attr_fn,
2276                                            int *comm_keyval, void *extra_state);
2277 OMPI_DECLSPEC  int PMPI_Comm_create_group(MPI_Comm comm, MPI_Group group, int tag, MPI_Comm *newcomm);
2278 OMPI_DECLSPEC  int PMPI_Comm_create_from_group(MPI_Group group, const char *tag, MPI_Info info,
2279                            MPI_Errhandler errhandler, MPI_Comm *newcomm);
2280 OMPI_DECLSPEC  int PMPI_Comm_create(MPI_Comm comm, MPI_Group group, MPI_Comm *newcomm);
2281 OMPI_DECLSPEC  int PMPI_Comm_delete_attr(MPI_Comm comm, int comm_keyval);
2282 OMPI_DECLSPEC  int PMPI_Comm_disconnect(MPI_Comm *comm);
2283 OMPI_DECLSPEC  int PMPI_Comm_dup(MPI_Comm comm, MPI_Comm *newcomm);
2284 OMPI_DECLSPEC  int PMPI_Comm_idup(MPI_Comm comm, MPI_Comm *newcomm, MPI_Request *request);
2285 OMPI_DECLSPEC  int PMPI_Comm_dup_with_info(MPI_Comm comm, MPI_Info info, MPI_Comm *newcomm);
2286 OMPI_DECLSPEC  int PMPI_Comm_idup_with_info(MPI_Comm comm, MPI_Info info, MPI_Comm *newcomm,
2287                                             MPI_Request *request);
2288 OMPI_DECLSPEC  MPI_Comm PMPI_Comm_f2c(MPI_Fint comm);
2289 OMPI_DECLSPEC  int PMPI_Comm_free_keyval(int *comm_keyval);
2290 OMPI_DECLSPEC  int PMPI_Comm_free(MPI_Comm *comm);
2291 OMPI_DECLSPEC  int PMPI_Comm_get_attr(MPI_Comm comm, int comm_keyval,
2292                                       void *attribute_val, int *flag);
2293 OMPI_DECLSPEC  int PMPI_Comm_get_errhandler(MPI_Comm comm, MPI_Errhandler *erhandler);
2294 OMPI_DECLSPEC  int PMPI_Comm_get_info(MPI_Comm comm, MPI_Info *info_used);
2295 OMPI_DECLSPEC  int PMPI_Comm_get_name(MPI_Comm comm, char *comm_name, int *resultlen);
2296 OMPI_DECLSPEC  int PMPI_Comm_get_parent(MPI_Comm *parent);
2297 OMPI_DECLSPEC  int PMPI_Comm_group(MPI_Comm comm, MPI_Group *group);
2298 OMPI_DECLSPEC  int PMPI_Comm_join(int fd, MPI_Comm *intercomm);
2299 OMPI_DECLSPEC  int PMPI_Comm_rank(MPI_Comm comm, int *rank);
2300 OMPI_DECLSPEC  int PMPI_Comm_remote_group(MPI_Comm comm, MPI_Group *group);
2301 OMPI_DECLSPEC  int PMPI_Comm_remote_size(MPI_Comm comm, int *size);
2302 OMPI_DECLSPEC  int PMPI_Comm_set_attr(MPI_Comm comm, int comm_keyval, void *attribute_val);
2303 OMPI_DECLSPEC  int PMPI_Comm_set_errhandler(MPI_Comm comm, MPI_Errhandler errhandler);
2304 OMPI_DECLSPEC  int PMPI_Comm_set_info(MPI_Comm comm, MPI_Info info);
2305 OMPI_DECLSPEC  int PMPI_Comm_set_name(MPI_Comm comm, const char *comm_name);
2306 OMPI_DECLSPEC  int PMPI_Comm_size(MPI_Comm comm, int *size);
2307 OMPI_DECLSPEC  int PMPI_Comm_spawn(const char *command, char *argv[], int maxprocs, MPI_Info info,
2308                                    int root, MPI_Comm comm, MPI_Comm *intercomm,
2309                                    int array_of_errcodes[]);
2310 OMPI_DECLSPEC  int PMPI_Comm_spawn_multiple(int count, char *array_of_commands[], char **array_of_argv[],
2311                                             const int array_of_maxprocs[], const MPI_Info array_of_info[],
2312                                             int root, MPI_Comm comm, MPI_Comm *intercomm,
2313                                             int array_of_errcodes[]);
2314 OMPI_DECLSPEC  int PMPI_Comm_split(MPI_Comm comm, int color, int key, MPI_Comm *newcomm);
2315 OMPI_DECLSPEC  int PMPI_Comm_split_type(MPI_Comm comm, int split_type, int key, MPI_Info info, MPI_Comm *newcomm);
2316 OMPI_DECLSPEC  int PMPI_Comm_test_inter(MPI_Comm comm, int *flag);
2317 OMPI_DECLSPEC  int PMPI_Compare_and_swap(const void *origin_addr, const void *compare_addr,
2318                                          void *result_addr, MPI_Datatype datatype, int target_rank,
2319                                          MPI_Aint target_disp, MPI_Win win);
2320 OMPI_DECLSPEC  int PMPI_Dims_create(int nnodes, int ndims, int dims[]);
2321 OMPI_DECLSPEC  MPI_Fint PMPI_Errhandler_c2f(MPI_Errhandler errhandler);
2322 OMPI_DECLSPEC  MPI_Errhandler PMPI_Errhandler_f2c(MPI_Fint errhandler);
2323 OMPI_DECLSPEC  int PMPI_Errhandler_free(MPI_Errhandler *errhandler);
2324 OMPI_DECLSPEC  int PMPI_Error_class(int errorcode, int *errorclass);
2325 OMPI_DECLSPEC  int PMPI_Error_string(int errorcode, char *string, int *resultlen);
2326 OMPI_DECLSPEC  int PMPI_Exscan(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
2327                                MPI_Op op, MPI_Comm comm);
2328 OMPI_DECLSPEC  int PMPI_Iexscan(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
2329                                 MPI_Op op, MPI_Comm comm, MPI_Request *request);
2330 OMPI_DECLSPEC  int PMPI_Exscan_init(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
2331                                     MPI_Op op, MPI_Comm comm, MPI_Info info, MPI_Request *request);
2332 OMPI_DECLSPEC  int PMPI_Fetch_and_op(const void *origin_addr, void *result_addr, MPI_Datatype datatype,
2333                                      int target_rank, MPI_Aint target_disp, MPI_Op op, MPI_Win win);
2334 OMPI_DECLSPEC  MPI_Fint PMPI_File_c2f(MPI_File file);
2335 OMPI_DECLSPEC  MPI_File PMPI_File_f2c(MPI_Fint file);
2336 OMPI_DECLSPEC  int PMPI_File_call_errhandler(MPI_File fh, int errorcode);
2337 OMPI_DECLSPEC  int PMPI_File_create_errhandler(MPI_File_errhandler_function *function,
2338                                                MPI_Errhandler *errhandler);
2339 OMPI_DECLSPEC  int PMPI_File_set_errhandler( MPI_File file, MPI_Errhandler errhandler);
2340 OMPI_DECLSPEC  int PMPI_File_get_errhandler( MPI_File file, MPI_Errhandler *errhandler);
2341 OMPI_DECLSPEC  int PMPI_File_open(MPI_Comm comm, const char *filename, int amode,
2342                                   MPI_Info info, MPI_File *fh);
2343 OMPI_DECLSPEC  int PMPI_File_close(MPI_File *fh);
2344 OMPI_DECLSPEC  int PMPI_File_delete(const char *filename, MPI_Info info);
2345 OMPI_DECLSPEC  int PMPI_File_set_size(MPI_File fh, MPI_Offset size);
2346 OMPI_DECLSPEC  int PMPI_File_preallocate(MPI_File fh, MPI_Offset size);
2347 OMPI_DECLSPEC  int PMPI_File_get_size(MPI_File fh, MPI_Offset *size);
2348 OMPI_DECLSPEC  int PMPI_File_get_group(MPI_File fh, MPI_Group *group);
2349 OMPI_DECLSPEC  int PMPI_File_get_amode(MPI_File fh, int *amode);
2350 OMPI_DECLSPEC  int PMPI_File_set_info(MPI_File fh, MPI_Info info);
2351 OMPI_DECLSPEC  int PMPI_File_get_info(MPI_File fh, MPI_Info *info_used);
2352 OMPI_DECLSPEC  int PMPI_File_set_view(MPI_File fh, MPI_Offset disp, MPI_Datatype etype,
2353                                       MPI_Datatype filetype, const char *datarep, MPI_Info info);
2354 OMPI_DECLSPEC  int PMPI_File_get_view(MPI_File fh, MPI_Offset *disp,
2355                                       MPI_Datatype *etype,
2356                                       MPI_Datatype *filetype, char *datarep);
2357 OMPI_DECLSPEC  int PMPI_File_read_at(MPI_File fh, MPI_Offset offset, void *buf,
2358                                      int count, MPI_Datatype datatype, MPI_Status *status);
2359 OMPI_DECLSPEC  int PMPI_File_read_at_all(MPI_File fh, MPI_Offset offset, void *buf,
2360                                          int count, MPI_Datatype datatype, MPI_Status *status);
2361 OMPI_DECLSPEC  int PMPI_File_write_at(MPI_File fh, MPI_Offset offset, const void *buf,
2362                                       int count, MPI_Datatype datatype, MPI_Status *status);
2363 OMPI_DECLSPEC  int PMPI_File_write_at_all(MPI_File fh, MPI_Offset offset, const void *buf,
2364                                           int count, MPI_Datatype datatype, MPI_Status *status);
2365 OMPI_DECLSPEC  int PMPI_File_iread_at(MPI_File fh, MPI_Offset offset, void *buf,
2366                                       int count, MPI_Datatype datatype, MPI_Request *request);
2367 OMPI_DECLSPEC  int PMPI_File_iwrite_at(MPI_File fh, MPI_Offset offset, const void *buf,
2368                                        int count, MPI_Datatype datatype, MPI_Request *request);
2369 OMPI_DECLSPEC  int PMPI_File_iread_at_all(MPI_File fh, MPI_Offset offset, void *buf,
2370                                           int count, MPI_Datatype datatype, MPI_Request *request);
2371 OMPI_DECLSPEC  int PMPI_File_iwrite_at_all(MPI_File fh, MPI_Offset offset, const void *buf,
2372                                            int count, MPI_Datatype datatype, MPI_Request *request);
2373 OMPI_DECLSPEC  int PMPI_File_read(MPI_File fh, void *buf, int count,
2374                                   MPI_Datatype datatype, MPI_Status *status);
2375 OMPI_DECLSPEC  int PMPI_File_read_all(MPI_File fh, void *buf, int count,
2376                                       MPI_Datatype datatype, MPI_Status *status);
2377 OMPI_DECLSPEC  int PMPI_File_write(MPI_File fh, const void *buf, int count,
2378                                    MPI_Datatype datatype, MPI_Status *status);
2379 OMPI_DECLSPEC  int PMPI_File_write_all(MPI_File fh, const void *buf, int count,
2380                                        MPI_Datatype datatype, MPI_Status *status);
2381 OMPI_DECLSPEC  int PMPI_File_iread(MPI_File fh, void *buf, int count,
2382                                    MPI_Datatype datatype, MPI_Request *request);
2383 OMPI_DECLSPEC  int PMPI_File_iwrite(MPI_File fh, const void *buf, int count,
2384                                     MPI_Datatype datatype, MPI_Request *request);
2385 OMPI_DECLSPEC  int PMPI_File_iread_all(MPI_File fh, void *buf, int count,
2386                                        MPI_Datatype datatype, MPI_Request *request);
2387 OMPI_DECLSPEC  int PMPI_File_iwrite_all(MPI_File fh, const void *buf, int count,
2388                                         MPI_Datatype datatype, MPI_Request *request);
2389 OMPI_DECLSPEC  int PMPI_File_seek(MPI_File fh, MPI_Offset offset, int whence);
2390 OMPI_DECLSPEC  int PMPI_File_get_position(MPI_File fh, MPI_Offset *offset);
2391 OMPI_DECLSPEC  int PMPI_File_get_byte_offset(MPI_File fh, MPI_Offset offset,
2392                                              MPI_Offset *disp);
2393 OMPI_DECLSPEC  int PMPI_File_read_shared(MPI_File fh, void *buf, int count,
2394                                          MPI_Datatype datatype, MPI_Status *status);
2395 OMPI_DECLSPEC  int PMPI_File_write_shared(MPI_File fh, const void *buf, int count,
2396                                           MPI_Datatype datatype, MPI_Status *status);
2397 OMPI_DECLSPEC  int PMPI_File_iread_shared(MPI_File fh, void *buf, int count,
2398                                           MPI_Datatype datatype, MPI_Request *request);
2399 OMPI_DECLSPEC  int PMPI_File_iwrite_shared(MPI_File fh, const void *buf, int count,
2400                                            MPI_Datatype datatype, MPI_Request *request);
2401 OMPI_DECLSPEC  int PMPI_File_read_ordered(MPI_File fh, void *buf, int count,
2402                                           MPI_Datatype datatype, MPI_Status *status);
2403 OMPI_DECLSPEC  int PMPI_File_write_ordered(MPI_File fh, const void *buf, int count,
2404                                            MPI_Datatype datatype, MPI_Status *status);
2405 OMPI_DECLSPEC  int PMPI_File_seek_shared(MPI_File fh, MPI_Offset offset, int whence);
2406 OMPI_DECLSPEC  int PMPI_File_get_position_shared(MPI_File fh, MPI_Offset *offset);
2407 OMPI_DECLSPEC  int PMPI_File_read_at_all_begin(MPI_File fh, MPI_Offset offset, void *buf,
2408                                                int count, MPI_Datatype datatype);
2409 OMPI_DECLSPEC  int PMPI_File_read_at_all_end(MPI_File fh, void *buf, MPI_Status *status);
2410 OMPI_DECLSPEC  int PMPI_File_write_at_all_begin(MPI_File fh, MPI_Offset offset, const void *buf,
2411                                                 int count, MPI_Datatype datatype);
2412 OMPI_DECLSPEC  int PMPI_File_write_at_all_end(MPI_File fh, const void *buf, MPI_Status *status);
2413 OMPI_DECLSPEC  int PMPI_File_read_all_begin(MPI_File fh, void *buf, int count,
2414                                             MPI_Datatype datatype);
2415 OMPI_DECLSPEC  int PMPI_File_read_all_end(MPI_File fh, void *buf, MPI_Status *status);
2416 OMPI_DECLSPEC  int PMPI_File_write_all_begin(MPI_File fh, const void *buf, int count,
2417                                              MPI_Datatype datatype);
2418 OMPI_DECLSPEC  int PMPI_File_write_all_end(MPI_File fh, const void *buf, MPI_Status *status);
2419 OMPI_DECLSPEC  int PMPI_File_read_ordered_begin(MPI_File fh, void *buf, int count,
2420                                                 MPI_Datatype datatype);
2421 OMPI_DECLSPEC  int PMPI_File_read_ordered_end(MPI_File fh, void *buf, MPI_Status *status);
2422 OMPI_DECLSPEC  int PMPI_File_write_ordered_begin(MPI_File fh, const void *buf, int count,
2423                                                  MPI_Datatype datatype);
2424 OMPI_DECLSPEC  int PMPI_File_write_ordered_end(MPI_File fh, const void *buf, MPI_Status *status);
2425 OMPI_DECLSPEC  int PMPI_File_get_type_extent(MPI_File fh, MPI_Datatype datatype,
2426                                              MPI_Aint *extent);
2427 OMPI_DECLSPEC  int PMPI_File_set_atomicity(MPI_File fh, int flag);
2428 OMPI_DECLSPEC  int PMPI_File_get_atomicity(MPI_File fh, int *flag);
2429 OMPI_DECLSPEC  int PMPI_File_sync(MPI_File fh);
2430 OMPI_DECLSPEC  int PMPI_Finalize(void);
2431 OMPI_DECLSPEC  int PMPI_Finalized(int *flag);
2432 OMPI_DECLSPEC  int PMPI_Free_mem(void *base);
2433 OMPI_DECLSPEC  int PMPI_Gather(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2434                                void *recvbuf, int recvcount, MPI_Datatype recvtype,
2435                                int root, MPI_Comm comm);
2436 OMPI_DECLSPEC  int PMPI_Igather(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2437                                 void *recvbuf, int recvcount, MPI_Datatype recvtype,
2438                                 int root, MPI_Comm comm, MPI_Request *request);
2439 OMPI_DECLSPEC  int PMPI_Gather_init(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2440                                     void *recvbuf, int recvcount, MPI_Datatype recvtype,
2441                                     int root, MPI_Comm comm, MPI_Info info, MPI_Request *request);
2442 OMPI_DECLSPEC  int PMPI_Gatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2443                                 void *recvbuf, const int recvcounts[], const int displs[],
2444                                 MPI_Datatype recvtype, int root, MPI_Comm comm);
2445 OMPI_DECLSPEC  int PMPI_Igatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2446                                  void *recvbuf, const int recvcounts[], const int displs[], MPI_Datatype recvtype,
2447                                  int root, MPI_Comm comm, MPI_Request *request);
2448 OMPI_DECLSPEC  int PMPI_Gatherv_init(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2449                                      void *recvbuf, const int recvcounts[], const int displs[], MPI_Datatype recvtype,
2450                                      int root, MPI_Comm comm, MPI_Info info, MPI_Request *request);
2451 OMPI_DECLSPEC  int PMPI_Get_address(const void *location, MPI_Aint *address);
2452 OMPI_DECLSPEC  int PMPI_Get_count(const MPI_Status *status, MPI_Datatype datatype, int *count);
2453 OMPI_DECLSPEC  int PMPI_Get_elements(const MPI_Status *status, MPI_Datatype datatype,
2454                                      int *count);
2455 OMPI_DECLSPEC  int PMPI_Get_elements_x(const MPI_Status *status, MPI_Datatype datatype,
2456                                        MPI_Count *count);
2457 OMPI_DECLSPEC  int PMPI_Get(void *origin_addr, int origin_count,
2458                             MPI_Datatype origin_datatype, int target_rank,
2459                             MPI_Aint target_disp, int target_count,
2460                             MPI_Datatype target_datatype, MPI_Win win);
2461 OMPI_DECLSPEC  int PMPI_Get_accumulate(const void *origin_addr, int origin_count, MPI_Datatype origin_datatype,
2462                                        void *result_addr, int result_count, MPI_Datatype result_datatype,
2463                                        int target_rank, MPI_Aint target_disp, int target_count,
2464                                        MPI_Datatype target_datatype, MPI_Op op, MPI_Win win);
2465 OMPI_DECLSPEC  int PMPI_Get_library_version(char *version, int *resultlen);
2466 OMPI_DECLSPEC  int PMPI_Get_processor_name(char *name, int *resultlen);
2467 OMPI_DECLSPEC  int PMPI_Get_version(int *version, int *subversion);
2468 OMPI_DECLSPEC  int PMPI_Graph_create(MPI_Comm comm_old, int nnodes, const int index[],
2469                                      const int edges[], int reorder, MPI_Comm *comm_graph);
2470 OMPI_DECLSPEC  int PMPI_Graph_get(MPI_Comm comm, int maxindex, int maxedges,
2471                                   int index[], int edges[]);
2472 OMPI_DECLSPEC  int PMPI_Graph_map(MPI_Comm comm, int nnodes, const int index[], const int edges[],
2473                                   int *newrank);
2474 OMPI_DECLSPEC  int PMPI_Graph_neighbors_count(MPI_Comm comm, int rank, int *nneighbors);
2475 OMPI_DECLSPEC  int PMPI_Graph_neighbors(MPI_Comm comm, int rank, int maxneighbors,
2476                                         int neighbors[]);
2477 OMPI_DECLSPEC  int PMPI_Graphdims_get(MPI_Comm comm, int *nnodes, int *nedges);
2478 OMPI_DECLSPEC  int PMPI_Grequest_complete(MPI_Request request);
2479 OMPI_DECLSPEC  int PMPI_Grequest_start(MPI_Grequest_query_function *query_fn,
2480                                        MPI_Grequest_free_function *free_fn,
2481                                        MPI_Grequest_cancel_function *cancel_fn,
2482                                        void *extra_state, MPI_Request *request);
2483 OMPI_DECLSPEC  MPI_Fint PMPI_Group_c2f(MPI_Group group);
2484 OMPI_DECLSPEC  int PMPI_Group_compare(MPI_Group group1, MPI_Group group2, int *result);
2485 OMPI_DECLSPEC  int PMPI_Group_difference(MPI_Group group1, MPI_Group group2,
2486                                          MPI_Group *newgroup);
2487 OMPI_DECLSPEC  int PMPI_Group_excl(MPI_Group group, int n, const int ranks[],
2488                                    MPI_Group *newgroup);
2489 OMPI_DECLSPEC  MPI_Group PMPI_Group_f2c(MPI_Fint group);
2490 OMPI_DECLSPEC  int PMPI_Group_free(MPI_Group *group);
2491 OMPI_DECLSPEC  int PMPI_Group_from_session_pset (MPI_Session session, const char *pset_name, MPI_Group *newgroup);
2492 OMPI_DECLSPEC  int PMPI_Group_incl(MPI_Group group, int n, const int ranks[],
2493                                    MPI_Group *newgroup);
2494 OMPI_DECLSPEC  int PMPI_Group_intersection(MPI_Group group1, MPI_Group group2,
2495                                            MPI_Group *newgroup);
2496 OMPI_DECLSPEC  int PMPI_Group_range_excl(MPI_Group group, int n, int ranges[][3],
2497                                          MPI_Group *newgroup);
2498 OMPI_DECLSPEC  int PMPI_Group_range_incl(MPI_Group group, int n, int ranges[][3],
2499                                          MPI_Group *newgroup);
2500 OMPI_DECLSPEC  int PMPI_Group_rank(MPI_Group group, int *rank);
2501 OMPI_DECLSPEC  int PMPI_Group_size(MPI_Group group, int *size);
2502 OMPI_DECLSPEC  int PMPI_Group_translate_ranks(MPI_Group group1, int n, const int ranks1[],
2503                                               MPI_Group group2, int ranks2[]);
2504 OMPI_DECLSPEC  int PMPI_Group_union(MPI_Group group1, MPI_Group group2,
2505                                     MPI_Group *newgroup);
2506 OMPI_DECLSPEC  int PMPI_Ibsend(const void *buf, int count, MPI_Datatype datatype, int dest,
2507                                int tag, MPI_Comm comm, MPI_Request *request);
2508 OMPI_DECLSPEC  int PMPI_Improbe(int source, int tag, MPI_Comm comm,
2509                                 int *flag, MPI_Message *message,
2510                                 MPI_Status *status);
2511 OMPI_DECLSPEC  int PMPI_Imrecv(void *buf, int count, MPI_Datatype type,
2512                                MPI_Message *message, MPI_Request *request);
2513 OMPI_DECLSPEC  MPI_Fint PMPI_Info_c2f(MPI_Info info);
2514 OMPI_DECLSPEC  int PMPI_Info_create(MPI_Info *info);
2515 OMPI_DECLSPEC  int PMPI_Info_create_env(int argc, char *argv[], MPI_Info *info);
2516 OMPI_DECLSPEC  int PMPI_Info_delete(MPI_Info info, const char *key);
2517 OMPI_DECLSPEC  int PMPI_Info_dup(MPI_Info info, MPI_Info *newinfo);
2518 OMPI_DECLSPEC  MPI_Info PMPI_Info_f2c(MPI_Fint info);
2519 OMPI_DECLSPEC  int PMPI_Info_free(MPI_Info *info);
2520 #if MPI_VERSION < 4
2521 OMPI_DECLSPEC  int PMPI_Info_get(MPI_Info info, const char *key, int valuelen,
2522                                  char *value, int *flag);
2523 #endif
2524 OMPI_DECLSPEC  int PMPI_Info_get_nkeys(MPI_Info info, int *nkeys);
2525 OMPI_DECLSPEC  int PMPI_Info_get_nthkey(MPI_Info info, int n, char *key);
2526 OMPI_DECLSPEC  int PMPI_Info_get_string(MPI_Info info, const char *key, int *buflen,
2527                                         char *value, int *flag);
2528 #if MPI_VERSION < 4
2529 OMPI_DECLSPEC  int PMPI_Info_get_valuelen(MPI_Info info, const char *key, int *valuelen,
2530                                           int *flag);
2531 #endif
2532 OMPI_DECLSPEC  int PMPI_Info_set(MPI_Info info, const char *key, const char *value);
2533 OMPI_DECLSPEC  int PMPI_Init(int *argc, char ***argv);
2534 OMPI_DECLSPEC  int PMPI_Initialized(int *flag);
2535 OMPI_DECLSPEC  int PMPI_Init_thread(int *argc, char ***argv, int required,
2536                                     int *provided);
2537 OMPI_DECLSPEC  int PMPI_Intercomm_create(MPI_Comm local_comm, int local_leader,
2538                                          MPI_Comm bridge_comm, int remote_leader,
2539                                          int tag, MPI_Comm *newintercomm);
2540 OMPI_DECLSPEC  int PMPI_Intercomm_create_from_groups (MPI_Group local_group, int local_leader, MPI_Group remote_group,
2541                                                       int remote_leader, const char *tag, MPI_Info info, MPI_Errhandler errhandler,
2542                                                       MPI_Comm *newintercomm);
2543 OMPI_DECLSPEC  int PMPI_Intercomm_merge(MPI_Comm intercomm, int high,
2544                                         MPI_Comm *newintercomm);
2545 OMPI_DECLSPEC  int PMPI_Iprobe(int source, int tag, MPI_Comm comm, int *flag,
2546                                MPI_Status *status);
2547 OMPI_DECLSPEC  int PMPI_Irecv(void *buf, int count, MPI_Datatype datatype, int source,
2548                               int tag, MPI_Comm comm, MPI_Request *request);
2549 OMPI_DECLSPEC  int PMPI_Irsend(const void *buf, int count, MPI_Datatype datatype, int dest,
2550                                int tag, MPI_Comm comm, MPI_Request *request);
2551 OMPI_DECLSPEC  int PMPI_Isend(const void *buf, int count, MPI_Datatype datatype, int dest,
2552                               int tag, MPI_Comm comm, MPI_Request *request);
2553 OMPI_DECLSPEC  int PMPI_Isendrecv(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2554                                   int dest, int sendtag, void *recvbuf, int recvcount,
2555                                   MPI_Datatype recvtype, int source, int recvtag,
2556                                   MPI_Comm comm,  MPI_Request *request);
2557 OMPI_DECLSPEC  int PMPI_Isendrecv_replace(void * buf, int count, MPI_Datatype datatype,
2558                                           int dest, int sendtag, int source, int recvtag,
2559                                           MPI_Comm comm, MPI_Request *request);
2560 OMPI_DECLSPEC  int PMPI_Issend(const void *buf, int count, MPI_Datatype datatype, int dest,
2561                                int tag, MPI_Comm comm, MPI_Request *request);
2562 OMPI_DECLSPEC  int PMPI_Precv_init(void* buf, int partitions, MPI_Count count,
2563                                   MPI_Datatype datatype, int source, int tag, MPI_Comm comm,
2564                                   MPI_Info info, MPI_Request *request);
2565 OMPI_DECLSPEC  int PMPI_Psend_init(const void* buf, int partitions, MPI_Count count,
2566                                   MPI_Datatype datatype, int dest, int tag, MPI_Comm comm,
2567                                   MPI_Info info, MPI_Request *request);
2568 OMPI_DECLSPEC  int PMPI_Pready(int partitions, MPI_Request request);
2569 OMPI_DECLSPEC  int PMPI_Pready_range(int partition_low, int partition_high,
2570                                     MPI_Request request);
2571 OMPI_DECLSPEC  int PMPI_Pready_list(int length, int partition_list[], MPI_Request request);
2572 OMPI_DECLSPEC  int PMPI_Parrived(MPI_Request request, int partition, int *flag);
2573 OMPI_DECLSPEC  int PMPI_Is_thread_main(int *flag);
2574 OMPI_DECLSPEC  int PMPI_Lookup_name(const char *service_name, MPI_Info info, char *port_name);
2575 OMPI_DECLSPEC  MPI_Fint PMPI_Message_c2f(MPI_Message message);
2576 OMPI_DECLSPEC  MPI_Message PMPI_Message_f2c(MPI_Fint message);
2577 OMPI_DECLSPEC  int PMPI_Mprobe(int source, int tag, MPI_Comm comm,
2578                                MPI_Message *message,
2579                                MPI_Status *status);
2580 OMPI_DECLSPEC  int PMPI_Mrecv(void *buf, int count, MPI_Datatype type,
2581                               MPI_Message *message, MPI_Status *status);
2582 OMPI_DECLSPEC  int PMPI_Neighbor_allgather(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2583                                            void *recvbuf, int recvcount, MPI_Datatype recvtype,
2584                                            MPI_Comm comm);
2585 OMPI_DECLSPEC  int PMPI_Ineighbor_allgather(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2586                                             void *recvbuf, int recvcount, MPI_Datatype recvtype,
2587                                             MPI_Comm comm, MPI_Request *request);
2588 OMPI_DECLSPEC  int PMPI_Neighbor_allgather_init(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2589                                                 void *recvbuf, int recvcount, MPI_Datatype recvtype,
2590                                                 MPI_Comm comm, MPI_Info info, MPI_Request *request);
2591 OMPI_DECLSPEC  int PMPI_Neighbor_allgatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2592                                             void *recvbuf, const int recvcounts[], const int displs[],
2593                                             MPI_Datatype recvtype, MPI_Comm comm);
2594 OMPI_DECLSPEC  int PMPI_Ineighbor_allgatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2595                                              void *recvbuf, const int recvcounts[], const int displs[], MPI_Datatype recvtype,
2596                                              MPI_Comm comm, MPI_Request *request);
2597 OMPI_DECLSPEC  int PMPI_Neighbor_allgatherv_init(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2598                                                  void *recvbuf, const int recvcounts[], const int displs[], MPI_Datatype recvtype,
2599                                                  MPI_Comm comm, MPI_Info info, MPI_Request *request);
2600 OMPI_DECLSPEC  int PMPI_Neighbor_alltoall(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2601                                           void *recvbuf, int recvcount, MPI_Datatype recvtype,
2602                                           MPI_Comm comm);
2603 OMPI_DECLSPEC  int PMPI_Ineighbor_alltoall(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2604                                            void *recvbuf, int recvcount, MPI_Datatype recvtype,
2605                                            MPI_Comm comm, MPI_Request *request);
2606 OMPI_DECLSPEC  int PMPI_Neighbor_alltoall_init(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2607                                                void *recvbuf, int recvcount, MPI_Datatype recvtype,
2608                                                MPI_Comm comm, MPI_Info info, MPI_Request *request);
2609 OMPI_DECLSPEC  int PMPI_Neighbor_alltoallv(const void *sendbuf, const int sendcounts[], const int sdispls[],  MPI_Datatype sendtype,
2610                                            void *recvbuf, const int recvcounts[], const int rdispls[], MPI_Datatype recvtype,
2611                                            MPI_Comm comm);
2612 OMPI_DECLSPEC  int PMPI_Ineighbor_alltoallv(const void *sendbuf, const int sendcounts[], const int sdispls[], MPI_Datatype sendtype,
2613                                             void *recvbuf, const int recvcounts[], const int rdispls[], MPI_Datatype recvtype,
2614                                             MPI_Comm comm, MPI_Request *request);
2615 OMPI_DECLSPEC  int PMPI_Neighbor_alltoallv_init(const void *sendbuf, const int sendcounts[], const int sdispls[], MPI_Datatype sendtype,
2616                                                 void *recvbuf, const int recvcounts[], const int rdispls[], MPI_Datatype recvtype,
2617                                                 MPI_Comm comm, MPI_Info info, MPI_Request *request);
2618 OMPI_DECLSPEC  int PMPI_Neighbor_alltoallw(const void *sendbuf, const int sendcounts[], const MPI_Aint sdispls[], const MPI_Datatype sendtypes[],
2619                                            void *recvbuf, const int recvcounts[], const MPI_Aint rdispls[], const MPI_Datatype recvtypes[],
2620                                            MPI_Comm comm);
2621 OMPI_DECLSPEC  int PMPI_Ineighbor_alltoallw(const void *sendbuf, const int sendcounts[], const MPI_Aint sdispls[], const MPI_Datatype sendtypes[],
2622                                             void *recvbuf, const int recvcounts[], const MPI_Aint rdispls[], const MPI_Datatype recvtypes[],
2623                                             MPI_Comm comm, MPI_Request *request);
2624 OMPI_DECLSPEC  int PMPI_Neighbor_alltoallw_init(const void *sendbuf, const int sendcounts[], const MPI_Aint sdispls[], const MPI_Datatype sendtypes[],
2625                                                 void *recvbuf, const int recvcounts[], const MPI_Aint rdispls[], const MPI_Datatype recvtypes[],
2626                                                 MPI_Comm comm, MPI_Info info, MPI_Request *request);
2627 OMPI_DECLSPEC  MPI_Fint PMPI_Op_c2f(MPI_Op op);
2628 OMPI_DECLSPEC  int PMPI_Op_commutative(MPI_Op op, int *commute);
2629 OMPI_DECLSPEC  int PMPI_Op_create(MPI_User_function *function, int commute, MPI_Op *op);
2630 OMPI_DECLSPEC  int PMPI_Open_port(MPI_Info info, char *port_name);
2631 OMPI_DECLSPEC  MPI_Op PMPI_Op_f2c(MPI_Fint op);
2632 OMPI_DECLSPEC  int PMPI_Op_free(MPI_Op *op);
2633 OMPI_DECLSPEC  int PMPI_Pack_external(const char datarep[], const void *inbuf, int incount,
2634                                       MPI_Datatype datatype, void *outbuf,
2635                                       MPI_Aint outsize, MPI_Aint *position);
2636 OMPI_DECLSPEC  int PMPI_Pack_external_size(const char datarep[], int incount,
2637                                            MPI_Datatype datatype, MPI_Aint *size);
2638 OMPI_DECLSPEC  int PMPI_Pack(const void *inbuf, int incount, MPI_Datatype datatype,
2639                              void *outbuf, int outsize, int *position, MPI_Comm comm);
2640 OMPI_DECLSPEC  int PMPI_Pack_size(int incount, MPI_Datatype datatype, MPI_Comm comm,
2641                                   int *size);
2642 OMPI_DECLSPEC  int PMPI_Pcontrol(const int level, ...);
2643 OMPI_DECLSPEC  int PMPI_Probe(int source, int tag, MPI_Comm comm, MPI_Status *status);
2644 OMPI_DECLSPEC  int PMPI_Publish_name(const char *service_name, MPI_Info info,
2645                                      const char *port_name);
2646 OMPI_DECLSPEC  int PMPI_Put(const void *origin_addr, int origin_count, MPI_Datatype origin_datatype,
2647                             int target_rank, MPI_Aint target_disp, int target_count,
2648                             MPI_Datatype target_datatype, MPI_Win win);
2649 OMPI_DECLSPEC  int PMPI_Query_thread(int *provided);
2650 OMPI_DECLSPEC  int PMPI_Raccumulate(const void *origin_addr, int origin_count, MPI_Datatype origin_datatype,
2651                                     int target_rank, MPI_Aint target_disp, int target_count,
2652                                     MPI_Datatype target_datatype, MPI_Op op, MPI_Win win, MPI_Request *request);
2653 OMPI_DECLSPEC  int PMPI_Recv_init(void *buf, int count, MPI_Datatype datatype, int source,
2654                                   int tag, MPI_Comm comm, MPI_Request *request);
2655 OMPI_DECLSPEC  int PMPI_Recv(void *buf, int count, MPI_Datatype datatype, int source,
2656                              int tag, MPI_Comm comm, MPI_Status *status);
2657 OMPI_DECLSPEC  int PMPI_Reduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
2658                                MPI_Op op, int root, MPI_Comm comm);
2659 OMPI_DECLSPEC  int PMPI_Ireduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
2660                                 MPI_Op op, int root, MPI_Comm comm, MPI_Request *request);
2661 OMPI_DECLSPEC  int PMPI_Reduce_init(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
2662                                     MPI_Op op, int root, MPI_Comm comm, MPI_Info info, MPI_Request *request);
2663 OMPI_DECLSPEC  int PMPI_Reduce_local(const void *inbuf, void *inoutbuf, int count,
2664                                      MPI_Datatype datatype, MPI_Op op);
2665 OMPI_DECLSPEC  int PMPI_Reduce_scatter(const void *sendbuf, void *recvbuf, const int recvcounts[], MPI_Datatype datatype,
2666                                        MPI_Op op, MPI_Comm comm);
2667 OMPI_DECLSPEC  int PMPI_Ireduce_scatter(const void *sendbuf, void *recvbuf, const int recvcounts[], MPI_Datatype datatype,
2668                                         MPI_Op op, MPI_Comm comm, MPI_Request *request);
2669 OMPI_DECLSPEC  int PMPI_Reduce_scatter_init(const void *sendbuf, void *recvbuf, const int recvcounts[], MPI_Datatype datatype,
2670                                             MPI_Op op, MPI_Comm comm, MPI_Info info, MPI_Request *request);
2671 OMPI_DECLSPEC  int PMPI_Reduce_scatter_block(const void *sendbuf, void *recvbuf, int recvcount, MPI_Datatype datatype,
2672                                              MPI_Op op, MPI_Comm comm);
2673 OMPI_DECLSPEC  int PMPI_Ireduce_scatter_block(const void *sendbuf, void *recvbuf, int recvcount, MPI_Datatype datatype,
2674                                               MPI_Op op, MPI_Comm comm, MPI_Request *request);
2675 OMPI_DECLSPEC  int PMPI_Reduce_scatter_block_init(const void *sendbuf, void *recvbuf, int recvcount, MPI_Datatype datatype,
2676                                                   MPI_Op op, MPI_Comm comm, MPI_Info info, MPI_Request *request);
2677 OMPI_DECLSPEC  int PMPI_Register_datarep(const char *datarep,
2678                                          MPI_Datarep_conversion_function *read_conversion_fn,
2679                                          MPI_Datarep_conversion_function *write_conversion_fn,
2680                                          MPI_Datarep_extent_function *dtype_file_extent_fn,
2681                                          void *extra_state);
2682 OMPI_DECLSPEC  MPI_Fint PMPI_Request_c2f(MPI_Request request);
2683 OMPI_DECLSPEC  MPI_Request PMPI_Request_f2c(MPI_Fint request);
2684 OMPI_DECLSPEC  int PMPI_Request_free(MPI_Request *request);
2685 OMPI_DECLSPEC  int PMPI_Request_get_status(MPI_Request request, int *flag,
2686                                            MPI_Status *status);
2687 OMPI_DECLSPEC  int PMPI_Rget(void *origin_addr, int origin_count, MPI_Datatype origin_datatype,
2688                              int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype,
2689                              MPI_Win win, MPI_Request *request);
2690 OMPI_DECLSPEC  int PMPI_Rget_accumulate(const void *origin_addr, int origin_count, MPI_Datatype origin_datatype,
2691                                         void *result_addr, int result_count, MPI_Datatype result_datatype,
2692                                         int target_rank, MPI_Aint target_disp, int target_count,
2693                                         MPI_Datatype target_datatype, MPI_Op op,
2694                                         MPI_Win win, MPI_Request *request);
2695 OMPI_DECLSPEC  int PMPI_Rput(const void *origin_addr, int origin_count, MPI_Datatype origin_datatype,
2696                              int target_rank, MPI_Aint target_disp, int target_cout,
2697                              MPI_Datatype target_datatype, MPI_Win win, MPI_Request *request);
2698 OMPI_DECLSPEC  int PMPI_Rsend(const void *ibuf, int count, MPI_Datatype datatype, int dest,
2699                               int tag, MPI_Comm comm);
2700 OMPI_DECLSPEC  int PMPI_Rsend_init(const void *buf, int count, MPI_Datatype datatype,
2701                                    int dest, int tag, MPI_Comm comm,
2702                                    MPI_Request *request);
2703 OMPI_DECLSPEC  int PMPI_Scan(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
2704                              MPI_Op op, MPI_Comm comm);
2705 OMPI_DECLSPEC  int PMPI_Iscan(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
2706                               MPI_Op op, MPI_Comm comm, MPI_Request *request);
2707 OMPI_DECLSPEC  int PMPI_Scan_init(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
2708                                   MPI_Op op, MPI_Comm comm, MPI_Info info, MPI_Request *request);
2709 OMPI_DECLSPEC  int PMPI_Scatter(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2710                                 void *recvbuf, int recvcount, MPI_Datatype recvtype,
2711                                 int root, MPI_Comm comm);
2712 OMPI_DECLSPEC  int PMPI_Iscatter(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2713                                  void *recvbuf, int recvcount, MPI_Datatype recvtype,
2714                                  int root, MPI_Comm comm, MPI_Request *request);
2715 OMPI_DECLSPEC  int PMPI_Scatter_init(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2716                                      void *recvbuf, int recvcount, MPI_Datatype recvtype,
2717                                      int root, MPI_Comm comm, MPI_Info info, MPI_Request *request);
2718 OMPI_DECLSPEC  int PMPI_Scatterv(const void *sendbuf, const int sendcounts[], const int displs[], MPI_Datatype sendtype,
2719                                  void *recvbuf, int recvcount, MPI_Datatype recvtype,
2720                                  int root, MPI_Comm comm);
2721 OMPI_DECLSPEC  int PMPI_Iscatterv(const void *sendbuf, const int sendcounts[], const int displs[], MPI_Datatype sendtype,
2722                                   void *recvbuf, int recvcount, MPI_Datatype recvtype,
2723                                   int root, MPI_Comm comm, MPI_Request *request);
2724 OMPI_DECLSPEC  int PMPI_Scatterv_init(const void *sendbuf, const int sendcounts[], const int displs[], MPI_Datatype sendtype,
2725                                       void *recvbuf, int recvcount, MPI_Datatype recvtype,
2726                                       int root, MPI_Comm comm, MPI_Info info, MPI_Request *request);
2727 OMPI_DECLSPEC  int PMPI_Send_init(const void *buf, int count, MPI_Datatype datatype,
2728                                   int dest, int tag, MPI_Comm comm,
2729                                   MPI_Request *request);
2730 OMPI_DECLSPEC  int PMPI_Send(const void *buf, int count, MPI_Datatype datatype, int dest,
2731                              int tag, MPI_Comm comm);
2732 OMPI_DECLSPEC  int PMPI_Sendrecv(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
2733                                  int dest, int sendtag, void *recvbuf, int recvcount,
2734                                  MPI_Datatype recvtype, int source, int recvtag,
2735                                  MPI_Comm comm,  MPI_Status *status);
2736 OMPI_DECLSPEC  int PMPI_Sendrecv_replace(void * buf, int count, MPI_Datatype datatype,
2737                                          int dest, int sendtag, int source, int recvtag,
2738                                          MPI_Comm comm, MPI_Status *status);
2739 OMPI_DECLSPEC  MPI_Fint PMPI_Session_c2f (const MPI_Session session);
2740 OMPI_DECLSPEC  int PMPI_Session_call_errhandler(MPI_Session session, int errorcode);
2741 OMPI_DECLSPEC  int PMPI_Session_create_errhandler (MPI_Session_errhandler_function *session_errhandler_fn,
2742                                                    MPI_Errhandler *errhandler);
2743 OMPI_DECLSPEC  int PMPI_Session_finalize (MPI_Session *session);
2744 OMPI_DECLSPEC  int PMPI_Session_get_errhandler(MPI_Session session, MPI_Errhandler *erhandler);
2745 OMPI_DECLSPEC  int PMPI_Session_get_info (MPI_Session session, MPI_Info *info_used);
2746 OMPI_DECLSPEC  int PMPI_Session_get_num_psets (MPI_Session session, MPI_Info info, int *npset_names);
2747 OMPI_DECLSPEC  int PMPI_Session_get_nth_pset (MPI_Session session, MPI_Info info, int n, int *len, char *pset_name);
2748 OMPI_DECLSPEC  int PMPI_Session_get_pset_info (MPI_Session session, const char *pset_name, MPI_Info *info_used);
2749 OMPI_DECLSPEC  int PMPI_Session_init (MPI_Info info, MPI_Errhandler errhandler,
2750                                      MPI_Session *session);
2751 OMPI_DECLSPEC  MPI_Session PMPI_Session_f2c (MPI_Fint session);
2752 OMPI_DECLSPEC  int PMPI_Session_set_errhandler(MPI_Session session, MPI_Errhandler erhandler);
2753 OMPI_DECLSPEC  int PMPI_Session_set_info (MPI_Session session, MPI_Info info);
2754 OMPI_DECLSPEC  int PMPI_Ssend_init(const void *buf, int count, MPI_Datatype datatype,
2755                                    int dest, int tag, MPI_Comm comm,
2756                                    MPI_Request *request);
2757 OMPI_DECLSPEC  int PMPI_Ssend(const void *buf, int count, MPI_Datatype datatype, int dest,
2758                               int tag, MPI_Comm comm);
2759 OMPI_DECLSPEC  int PMPI_Start(MPI_Request *request);
2760 OMPI_DECLSPEC  int PMPI_Startall(int count, MPI_Request array_of_requests[]);
2761 OMPI_DECLSPEC  int PMPI_Status_c2f(const MPI_Status *c_status, MPI_Fint *f_status);
2762 OMPI_DECLSPEC  int PMPI_Status_c2f08(const MPI_Status *c_status, MPI_F08_status *f08_status);
2763 OMPI_DECLSPEC  int PMPI_Status_f082f(const MPI_F08_status *f08_status, MPI_Fint *f_status);
2764 OMPI_DECLSPEC  int PMPI_Status_f082c(const MPI_F08_status *f08_status, MPI_Status *c_status);
2765 OMPI_DECLSPEC  int PMPI_Status_f2c(const MPI_Fint *f_status, MPI_Status *c_status);
2766 OMPI_DECLSPEC  int PMPI_Status_f2f08(const MPI_Fint *f_status, MPI_F08_status *f08_status);
2767 OMPI_DECLSPEC  int PMPI_Status_set_cancelled(MPI_Status *status, int flag);
2768 OMPI_DECLSPEC  int PMPI_Status_set_elements(MPI_Status *status, MPI_Datatype datatype,
2769                                             int count);
2770 OMPI_DECLSPEC  int PMPI_Status_set_elements_x(MPI_Status *status, MPI_Datatype datatype,
2771                                               MPI_Count count);
2772 OMPI_DECLSPEC  int PMPI_Testall(int count, MPI_Request array_of_requests[], int *flag,
2773                                 MPI_Status array_of_statuses[]);
2774 OMPI_DECLSPEC  int PMPI_Testany(int count, MPI_Request array_of_requests[], int *index, int *flag, MPI_Status *status);
2775 OMPI_DECLSPEC  int PMPI_Test(MPI_Request *request, int *flag, MPI_Status *status);
2776 OMPI_DECLSPEC  int PMPI_Test_cancelled(const MPI_Status *status, int *flag);
2777 OMPI_DECLSPEC  int PMPI_Testsome(int incount, MPI_Request array_of_requests[],
2778                                  int *outcount, int array_of_indices[],
2779                                  MPI_Status array_of_statuses[]);
2780 OMPI_DECLSPEC  int PMPI_Topo_test(MPI_Comm comm, int *status);
2781 OMPI_DECLSPEC  MPI_Fint PMPI_Type_c2f(MPI_Datatype datatype);
2782 OMPI_DECLSPEC  int PMPI_Type_commit(MPI_Datatype *type);
2783 OMPI_DECLSPEC  int PMPI_Type_contiguous(int count, MPI_Datatype oldtype,
2784                                         MPI_Datatype *newtype);
2785 OMPI_DECLSPEC  int PMPI_Type_create_darray(int size, int rank, int ndims,
2786                                            const int gsize_array[], const int distrib_array[],
2787                                            const int darg_array[], const int psize_array[],
2788                                            int order, MPI_Datatype oldtype,
2789                                            MPI_Datatype *newtype);
2790 OMPI_DECLSPEC  int PMPI_Type_create_f90_complex(int p, int r, MPI_Datatype *newtype);
2791 OMPI_DECLSPEC  int PMPI_Type_create_f90_integer(int r, MPI_Datatype *newtype);
2792 OMPI_DECLSPEC  int PMPI_Type_create_f90_real(int p, int r, MPI_Datatype *newtype);
2793 OMPI_DECLSPEC  int PMPI_Type_create_hindexed(int count, const int array_of_blocklengths[],
2794                                              const MPI_Aint array_of_displacements[],
2795                                              MPI_Datatype oldtype,
2796                                              MPI_Datatype *newtype);
2797 OMPI_DECLSPEC  int PMPI_Type_create_hvector(int count, int blocklength, MPI_Aint stride,
2798                                             MPI_Datatype oldtype,
2799                                             MPI_Datatype *newtype);
2800 OMPI_DECLSPEC  int PMPI_Type_create_keyval(MPI_Type_copy_attr_function *type_copy_attr_fn,
2801                                            MPI_Type_delete_attr_function *type_delete_attr_fn,
2802                                            int *type_keyval, void *extra_state);
2803 OMPI_DECLSPEC  int PMPI_Type_create_hindexed_block(int count, int blocklength,
2804                                                    const MPI_Aint array_of_displacements[],
2805                                                    MPI_Datatype oldtype,
2806                                                    MPI_Datatype *newtype);
2807 OMPI_DECLSPEC  int PMPI_Type_create_indexed_block(int count, int blocklength,
2808                                                   const int array_of_displacements[],
2809                                                   MPI_Datatype oldtype,
2810                                                   MPI_Datatype *newtype);
2811 OMPI_DECLSPEC  int PMPI_Type_create_struct(int count, const int array_of_block_lengths[],
2812                                            const MPI_Aint array_of_displacements[],
2813                                            const MPI_Datatype array_of_types[],
2814                                            MPI_Datatype *newtype);
2815 OMPI_DECLSPEC  int PMPI_Type_create_subarray(int ndims, const int size_array[], const int subsize_array[],
2816                                              const int start_array[], int order,
2817                                              MPI_Datatype oldtype, MPI_Datatype *newtype);
2818 OMPI_DECLSPEC  int PMPI_Type_create_resized(MPI_Datatype oldtype, MPI_Aint lb,
2819                                             MPI_Aint extent, MPI_Datatype *newtype);
2820 OMPI_DECLSPEC  int PMPI_Type_delete_attr(MPI_Datatype type, int type_keyval);
2821 OMPI_DECLSPEC  int PMPI_Type_dup(MPI_Datatype type, MPI_Datatype *newtype);
2822 OMPI_DECLSPEC  int PMPI_Type_free(MPI_Datatype *type);
2823 OMPI_DECLSPEC  int PMPI_Type_free_keyval(int *type_keyval);
2824 OMPI_DECLSPEC  MPI_Datatype PMPI_Type_f2c(MPI_Fint datatype);
2825 OMPI_DECLSPEC  int PMPI_Type_get_attr(MPI_Datatype type, int type_keyval,
2826                                       void *attribute_val, int *flag);
2827 OMPI_DECLSPEC  int PMPI_Type_get_contents(MPI_Datatype mtype, int max_integers,
2828                                           int max_addresses, int max_datatypes,
2829                                           int array_of_integers[],
2830                                           MPI_Aint array_of_addresses[],
2831                                           MPI_Datatype array_of_datatypes[]);
2832 OMPI_DECLSPEC  int PMPI_Type_get_envelope(MPI_Datatype type, int *num_integers,
2833                                           int *num_addresses, int *num_datatypes,
2834                                           int *combiner);
2835 OMPI_DECLSPEC  int PMPI_Type_get_extent(MPI_Datatype type, MPI_Aint *lb,
2836                                         MPI_Aint *extent);
2837 OMPI_DECLSPEC  int PMPI_Type_get_extent_x(MPI_Datatype type, MPI_Count *lb,
2838                                           MPI_Count *extent);
2839 OMPI_DECLSPEC  int PMPI_Type_get_name(MPI_Datatype type, char *type_name,
2840                                       int *resultlen);
2841 OMPI_DECLSPEC  int PMPI_Type_get_true_extent(MPI_Datatype datatype, MPI_Aint *true_lb,
2842                                              MPI_Aint *true_extent);
2843 OMPI_DECLSPEC  int PMPI_Type_get_true_extent_x(MPI_Datatype datatype, MPI_Count *true_lb,
2844                                                MPI_Count *true_extent);
2845 OMPI_DECLSPEC  int PMPI_Type_indexed(int count, const int array_of_blocklengths[],
2846                                      const int array_of_displacements[],
2847                                      MPI_Datatype oldtype, MPI_Datatype *newtype);
2848 OMPI_DECLSPEC  int PMPI_Type_match_size(int typeclass, int size, MPI_Datatype *type);
2849 OMPI_DECLSPEC  int PMPI_Type_set_attr(MPI_Datatype type, int type_keyval,
2850                                       void *attr_val);
2851 OMPI_DECLSPEC  int PMPI_Type_set_name(MPI_Datatype type, const char *type_name);
2852 OMPI_DECLSPEC  int PMPI_Type_size(MPI_Datatype type, int *size);
2853 OMPI_DECLSPEC  int PMPI_Type_size_x(MPI_Datatype type, MPI_Count *size);
2854 OMPI_DECLSPEC  int PMPI_Type_vector(int count, int blocklength, int stride,
2855                                     MPI_Datatype oldtype, MPI_Datatype *newtype);
2856 OMPI_DECLSPEC  int PMPI_Unpack(const void *inbuf, int insize, int *position,
2857                                void *outbuf, int outcount, MPI_Datatype datatype,
2858                                MPI_Comm comm);
2859 OMPI_DECLSPEC  int PMPI_Unpublish_name(const char *service_name, MPI_Info info,
2860                                        const char *port_name);
2861 OMPI_DECLSPEC  int PMPI_Unpack_external (const char datarep[], const void *inbuf, MPI_Aint insize,
2862                                          MPI_Aint *position, void *outbuf, int outcount,
2863                                          MPI_Datatype datatype);
2864 OMPI_DECLSPEC  int PMPI_Waitall(int count, MPI_Request array_of_requests[],
2865                                 MPI_Status array_of_statuses[]);
2866 OMPI_DECLSPEC  int PMPI_Waitany(int count, MPI_Request array_of_requests[],
2867                                 int *index, MPI_Status *status);
2868 OMPI_DECLSPEC  int PMPI_Wait(MPI_Request *request, MPI_Status *status);
2869 OMPI_DECLSPEC  int PMPI_Waitsome(int incount, MPI_Request array_of_requests[],
2870                                  int *outcount, int array_of_indices[],
2871                                  MPI_Status array_of_statuses[]);
2872 OMPI_DECLSPEC  int PMPI_Win_allocate(MPI_Aint size, int disp_unit, MPI_Info info,
2873                                      MPI_Comm comm, void *baseptr, MPI_Win *win);
2874 OMPI_DECLSPEC  int PMPI_Win_allocate_shared(MPI_Aint size, int disp_unit, MPI_Info info,
2875                                             MPI_Comm comm, void *baseptr, MPI_Win *win);
2876 OMPI_DECLSPEC  int PMPI_Win_attach(MPI_Win win, void *base, MPI_Aint size);
2877 OMPI_DECLSPEC  MPI_Fint PMPI_Win_c2f(MPI_Win win);
2878 OMPI_DECLSPEC  int PMPI_Win_call_errhandler(MPI_Win win, int errorcode);
2879 OMPI_DECLSPEC  int PMPI_Win_complete(MPI_Win win);
2880 OMPI_DECLSPEC  int PMPI_Win_create(void *base, MPI_Aint size, int disp_unit,
2881                                    MPI_Info info, MPI_Comm comm, MPI_Win *win);
2882 OMPI_DECLSPEC  int PMPI_Win_create_dynamic(MPI_Info info, MPI_Comm comm, MPI_Win *win);
2883 OMPI_DECLSPEC  int PMPI_Win_create_errhandler(MPI_Win_errhandler_function *function,
2884                                               MPI_Errhandler *errhandler);
2885 OMPI_DECLSPEC  int PMPI_Win_create_keyval(MPI_Win_copy_attr_function *win_copy_attr_fn,
2886                                           MPI_Win_delete_attr_function *win_delete_attr_fn,
2887                                           int *win_keyval, void *extra_state);
2888 OMPI_DECLSPEC  int PMPI_Win_delete_attr(MPI_Win win, int win_keyval);
2889 OMPI_DECLSPEC  int PMPI_Win_detach(MPI_Win win, const void *base);
2890 OMPI_DECLSPEC  MPI_Win PMPI_Win_f2c(MPI_Fint win);
2891 OMPI_DECLSPEC  int PMPI_Win_fence(int mpi_assert, MPI_Win win);
2892 OMPI_DECLSPEC  int PMPI_Win_flush(int rank, MPI_Win win);
2893 OMPI_DECLSPEC  int PMPI_Win_flush_all(MPI_Win win);
2894 OMPI_DECLSPEC  int PMPI_Win_flush_local(int rank, MPI_Win win);
2895 OMPI_DECLSPEC  int PMPI_Win_flush_local_all(MPI_Win win);
2896 OMPI_DECLSPEC  int PMPI_Win_free(MPI_Win *win);
2897 OMPI_DECLSPEC  int PMPI_Win_free_keyval(int *win_keyval);
2898 OMPI_DECLSPEC  int PMPI_Win_get_attr(MPI_Win win, int win_keyval,
2899                                      void *attribute_val, int *flag);
2900 OMPI_DECLSPEC  int PMPI_Win_get_errhandler(MPI_Win win, MPI_Errhandler *errhandler);
2901 OMPI_DECLSPEC  int PMPI_Win_get_group(MPI_Win win, MPI_Group *group);
2902 OMPI_DECLSPEC  int PMPI_Win_get_info(MPI_Win win, MPI_Info *info_used);
2903 OMPI_DECLSPEC  int PMPI_Win_get_name(MPI_Win win, char *win_name, int *resultlen);
2904 OMPI_DECLSPEC  int PMPI_Win_lock(int lock_type, int rank, int mpi_assert, MPI_Win win);
2905 OMPI_DECLSPEC  int PMPI_Win_lock_all(int mpi_assert, MPI_Win win);
2906 OMPI_DECLSPEC  int PMPI_Win_post(MPI_Group group, int mpi_assert, MPI_Win win);
2907 OMPI_DECLSPEC  int PMPI_Win_set_attr(MPI_Win win, int win_keyval, void *attribute_val);
2908 OMPI_DECLSPEC  int PMPI_Win_set_errhandler(MPI_Win win, MPI_Errhandler errhandler);
2909 OMPI_DECLSPEC  int PMPI_Win_set_info(MPI_Win win, MPI_Info info);
2910 OMPI_DECLSPEC  int PMPI_Win_set_name(MPI_Win win, const char *win_name);
2911 OMPI_DECLSPEC  int PMPI_Win_shared_query(MPI_Win win, int rank, MPI_Aint *size, int *disp_unit, void *baseptr);
2912 OMPI_DECLSPEC  int PMPI_Win_start(MPI_Group group, int mpi_assert, MPI_Win win);
2913 OMPI_DECLSPEC  int PMPI_Win_sync(MPI_Win win);
2914 OMPI_DECLSPEC  int PMPI_Win_test(MPI_Win win, int *flag);
2915 OMPI_DECLSPEC  int PMPI_Win_unlock(int rank, MPI_Win win);
2916 OMPI_DECLSPEC  int PMPI_Win_unlock_all(MPI_Win win);
2917 OMPI_DECLSPEC  int PMPI_Win_wait(MPI_Win win);
2918 OMPI_DECLSPEC  double PMPI_Wtick(void);
2919 OMPI_DECLSPEC  double PMPI_Wtime(void);
2920 OMPI_DECLSPEC  int PMPI_T_init_thread (int required, int *provided);
2921 OMPI_DECLSPEC  int PMPI_T_finalize (void);
2922 OMPI_DECLSPEC  int PMPI_T_cvar_get_num (int *num_cvar);
2923 OMPI_DECLSPEC  int PMPI_T_cvar_get_info (int cvar_index, char *name, int *name_len,
2924                                          int *verbosity, MPI_Datatype *datatype,
2925                                          MPI_T_enum *enumtype, char *desc,
2926                                          int *desc_len, int *bind, int *scope);
2927 OMPI_DECLSPEC  int PMPI_T_cvar_get_index (const char *name, int *cvar_index);
2928 OMPI_DECLSPEC  int PMPI_T_cvar_handle_alloc (int cvar_index, void *obj_handle,
2929                                             MPI_T_cvar_handle *handle, int *count);
2930 OMPI_DECLSPEC  int PMPI_T_cvar_handle_free (MPI_T_cvar_handle *handle);
2931 OMPI_DECLSPEC  int PMPI_T_cvar_read (MPI_T_cvar_handle handle, void *buf);
2932 OMPI_DECLSPEC  int PMPI_T_cvar_write (MPI_T_cvar_handle handle, const void *buf);
2933 OMPI_DECLSPEC  int PMPI_T_category_get_num(int *num_cat);
2934 OMPI_DECLSPEC  int PMPI_T_category_get_info(int cat_index, char *name, int *name_len,
2935                                             char *desc, int *desc_len, int *num_cvars,
2936                                             int *num_pvars, int *num_categories);
2937 OMPI_DECLSPEC  int PMPI_T_category_get_index (const char *name, int *category_index);
2938 OMPI_DECLSPEC  int PMPI_T_category_get_cvars(int cat_index, int len, int indices[]);
2939 OMPI_DECLSPEC  int PMPI_T_category_get_pvars(int cat_index, int len, int indices[]);
2940 OMPI_DECLSPEC  int PMPI_T_category_get_categories(int cat_index, int len, int indices[]);
2941 OMPI_DECLSPEC  int PMPI_T_category_changed(int *stamp);
2942 
2943 OMPI_DECLSPEC  int PMPI_T_pvar_get_num(int *num_pvar);
2944 OMPI_DECLSPEC  int PMPI_T_pvar_get_info(int pvar_index, char *name, int *name_len,
2945                                         int *verbosity, int *var_class, MPI_Datatype *datatype,
2946                                         MPI_T_enum *enumtype, char *desc, int *desc_len, int *bind,
2947                                         int *readonly, int *continuous, int *atomic);
2948 OMPI_DECLSPEC  int PMPI_T_pvar_get_index (const char *name, int var_class, int *pvar_index);
2949 OMPI_DECLSPEC  int PMPI_T_pvar_session_create(MPI_T_pvar_session *session);
2950 OMPI_DECLSPEC  int PMPI_T_pvar_session_free(MPI_T_pvar_session *session);
2951 OMPI_DECLSPEC  int PMPI_T_pvar_handle_alloc(MPI_T_pvar_session session, int pvar_index,
2952                                             void *obj_handle, MPI_T_pvar_handle *handle, int *count);
2953 OMPI_DECLSPEC  int PMPI_T_pvar_handle_free(MPI_T_pvar_session session, MPI_T_pvar_handle *handle);
2954 OMPI_DECLSPEC  int PMPI_T_pvar_start(MPI_T_pvar_session session, MPI_T_pvar_handle handle);
2955 OMPI_DECLSPEC  int PMPI_T_pvar_stop(MPI_T_pvar_session session, MPI_T_pvar_handle handle);
2956 OMPI_DECLSPEC  int PMPI_T_pvar_read(MPI_T_pvar_session session, MPI_T_pvar_handle handle,
2957                                     void *buf);
2958 OMPI_DECLSPEC  int PMPI_T_pvar_write(MPI_T_pvar_session session, MPI_T_pvar_handle handle,
2959                                      const void *buf);
2960 OMPI_DECLSPEC  int PMPI_T_pvar_reset(MPI_T_pvar_session session, MPI_T_pvar_handle handle);
2961 OMPI_DECLSPEC  int PMPI_T_pvar_readreset(MPI_T_pvar_session session, MPI_T_pvar_handle handle,
2962                                          void *buf);
2963 OMPI_DECLSPEC  int PMPI_T_enum_get_info(MPI_T_enum enumtype, int *num, char *name, int *name_len);
2964 OMPI_DECLSPEC  int PMPI_T_enum_get_item(MPI_T_enum enumtype, int index, int *value, char *name,
2965                                         int *name_len);
2966 
2967   /*
2968    * Tool MPI API
2969    */
2970 OMPI_DECLSPEC  int MPI_T_init_thread (int required, int *provided);
2971 OMPI_DECLSPEC  int MPI_T_finalize (void);
2972 OMPI_DECLSPEC  int MPI_T_cvar_get_num (int *num_cvar);
2973 OMPI_DECLSPEC  int MPI_T_cvar_get_info (int cvar_index, char *name, int *name_len,
2974                                         int *verbosity, MPI_Datatype *datatype,
2975                                         MPI_T_enum *enumtype, char *desc,
2976                                         int *desc_len, int *bind, int *scope);
2977 OMPI_DECLSPEC  int MPI_T_cvar_get_index (const char *name, int *cvar_index);
2978 OMPI_DECLSPEC  int MPI_T_cvar_handle_alloc (int cvar_index, void *obj_handle,
2979                                             MPI_T_cvar_handle *handle, int *count);
2980 OMPI_DECLSPEC  int MPI_T_cvar_handle_free (MPI_T_cvar_handle *handle);
2981 OMPI_DECLSPEC  int MPI_T_cvar_read (MPI_T_cvar_handle handle, void *buf);
2982 OMPI_DECLSPEC  int MPI_T_cvar_write (MPI_T_cvar_handle handle, const void *buf);
2983 OMPI_DECLSPEC  int MPI_T_category_get_num(int *num_cat);
2984 OMPI_DECLSPEC  int MPI_T_category_get_info(int cat_index, char *name, int *name_len,
2985                                            char *desc, int *desc_len, int *num_cvars,
2986                                            int *num_pvars, int *num_categories);
2987 OMPI_DECLSPEC  int MPI_T_category_get_index (const char *name, int *category_index);
2988 OMPI_DECLSPEC  int MPI_T_category_get_cvars(int cat_index, int len, int indices[]);
2989 OMPI_DECLSPEC  int MPI_T_category_get_pvars(int cat_index, int len, int indices[]);
2990 OMPI_DECLSPEC  int MPI_T_category_get_categories(int cat_index, int len, int indices[]);
2991 OMPI_DECLSPEC  int MPI_T_category_changed(int *stamp);
2992 
2993 OMPI_DECLSPEC  int MPI_T_pvar_get_num(int *num_pvar);
2994 OMPI_DECLSPEC  int MPI_T_pvar_get_info(int pvar_index, char *name, int *name_len,
2995                                        int *verbosity, int *var_class, MPI_Datatype *datatype,
2996                                        MPI_T_enum *enumtype, char *desc, int *desc_len, int *bind,
2997                                        int *readonly, int *continuous, int *atomic);
2998 OMPI_DECLSPEC  int MPI_T_pvar_get_index (const char *name, int var_class, int *pvar_index);
2999 OMPI_DECLSPEC  int MPI_T_pvar_session_create(MPI_T_pvar_session *session);
3000 OMPI_DECLSPEC  int MPI_T_pvar_session_free(MPI_T_pvar_session *session);
3001 OMPI_DECLSPEC  int MPI_T_pvar_handle_alloc(MPI_T_pvar_session session, int pvar_index,
3002                                            void *obj_handle, MPI_T_pvar_handle *handle, int *count);
3003 OMPI_DECLSPEC  int MPI_T_pvar_handle_free(MPI_T_pvar_session session, MPI_T_pvar_handle *handle);
3004 OMPI_DECLSPEC  int MPI_T_pvar_start(MPI_T_pvar_session session, MPI_T_pvar_handle handle);
3005 OMPI_DECLSPEC  int MPI_T_pvar_stop(MPI_T_pvar_session session, MPI_T_pvar_handle handle);
3006 OMPI_DECLSPEC  int MPI_T_pvar_read(MPI_T_pvar_session session, MPI_T_pvar_handle handle,
3007                                    void *buf);
3008 OMPI_DECLSPEC  int MPI_T_pvar_write(MPI_T_pvar_session session, MPI_T_pvar_handle handle,
3009                                     const void *buf);
3010 OMPI_DECLSPEC  int MPI_T_pvar_reset(MPI_T_pvar_session session, MPI_T_pvar_handle handle);
3011 OMPI_DECLSPEC  int MPI_T_pvar_readreset(MPI_T_pvar_session session, MPI_T_pvar_handle handle,
3012                                         void *buf);
3013 OMPI_DECLSPEC  int MPI_T_enum_get_info(MPI_T_enum enumtype, int *num, char *name, int *name_len);
3014 OMPI_DECLSPEC  int MPI_T_enum_get_item(MPI_T_enum enumtype, int index, int *value, char *name,
3015                                        int *name_len);
3016 /*
3017  * Deprecated prototypes.  Usage is discouraged, as these may be
3018  * deleted in future versions of the MPI Standard.
3019  */
3020 OMPI_DECLSPEC  int MPI_Attr_delete(MPI_Comm comm, int keyval)
3021             __mpi_interface_deprecated__("MPI_Attr_delete was deprecated in MPI-2.0; use MPI_Comm_delete_attr instead");
3022 OMPI_DECLSPEC  int PMPI_Attr_delete(MPI_Comm comm, int keyval)
3023             __mpi_interface_deprecated__("PMPI_Attr_delete was deprecated in MPI-2.0; use PMPI_Comm_delete_attr instead");
3024 OMPI_DECLSPEC  int MPI_Attr_get(MPI_Comm comm, int keyval, void *attribute_val, int *flag)
3025             __mpi_interface_deprecated__("MPI_Attr_get was deprecated in MPI-2.0; use MPI_Comm_get_attr instead");
3026 OMPI_DECLSPEC  int PMPI_Attr_get(MPI_Comm comm, int keyval, void *attribute_val, int *flag)
3027             __mpi_interface_deprecated__("PMPI_Attr_get was deprecated in MPI-2.0; use PMPI_Comm_get_attr instead");
3028 OMPI_DECLSPEC  int MPI_Attr_put(MPI_Comm comm, int keyval, void *attribute_val)
3029             __mpi_interface_deprecated__("MPI_Attr_put was deprecated in MPI-2.0; use MPI_Comm_set_attr instead");
3030 OMPI_DECLSPEC  int PMPI_Attr_put(MPI_Comm comm, int keyval, void *attribute_val)
3031     __mpi_interface_deprecated__("PMPI_Attr_put was deprecated in MPI-2.0; use PMPI_Comm_set_attr instead");
3032 #if MPI_VERSION >= 4
3033 OMPI_DECLSPEC  int MPI_Info_get(MPI_Info info, const char *key, int valuelen,
3034                                 char *value, int *flag)
3035             __mpi_interface_deprecated__("MPI_Info_get was deprecated in MPI-4.0; use MPI_Info_get_string instead");
3036 OMPI_DECLSPEC  int PMPI_Info_get(MPI_Info info, const char *key, int valuelen,
3037                                  char *value, int *flag)
3038             __mpi_interface_deprecated__("PMPI_Info_get was deprecated in MPI-4.0; use PMPI_Info_get_string instead");
3039 OMPI_DECLSPEC  int MPI_Info_get_valuelen(MPI_Info info, const char *key, int *valuelen,
3040                                          int *flag)
3041             __mpi_interface_deprecated__("MPI_Info_get_valuelen was deprecated in MPI-4.0; use MPI_Info_get_string instead");
3042 OMPI_DECLSPEC  int PMPI_Info_get_valuelen(MPI_Info info, const char *key, int *valuelen,
3043                                           int *flag)
3044             __mpi_interface_deprecated__("PMPI_Info_get_valuelen was deprecated in MPI-4.0; use PMPI_Info_get_string instead");
3045 #endif
3046 
3047 /*
3048  * Even though MPI_Copy_function and MPI_Delete_function are
3049  * deprecated, we do not use the attributes marking them as such,
3050  * because otherwise the compiler will warn for all the functions that
3051  * are declared using them (e.g., MPI_Keyval_create).
3052  */
3053 typedef int (MPI_Copy_function)(MPI_Comm, int, void *,
3054                                 void *, void *, int *);
3055 /* MPI_Copy_function was deprecated in MPI-2.0; use MPI_Comm_copy_attr_function instead. */
3056 typedef int (MPI_Delete_function)(MPI_Comm, int, void *, void *);
3057 /* MPI_Delete_function was deprecated in MPI-2.0; use MPI_Comm_delete_attr_function instead. */
3058 OMPI_DECLSPEC  int MPI_Keyval_create(MPI_Copy_function *copy_fn,
3059                                      MPI_Delete_function *delete_fn,
3060                                      int *keyval, void *extra_state)
3061             __mpi_interface_deprecated__("MPI_Keyval_create was deprecated in MPI-2.0; use MPI_Comm_create_keyval instead.");
3062 OMPI_DECLSPEC  int PMPI_Keyval_create(MPI_Copy_function *copy_fn,
3063                                       MPI_Delete_function *delete_fn,
3064                                       int *keyval, void *extra_state)
3065             __mpi_interface_deprecated__("PMPI_Keyval_create was deprecated in MPI-2.0; use PMPI_Comm_create_keyval instead.");
3066 OMPI_DECLSPEC  int MPI_Keyval_free(int *keyval)
3067             __mpi_interface_deprecated__("MPI_Keyval_free was deprecated in MPI-2.0; MPI_Comm_free_keyval instead.");
3068 OMPI_DECLSPEC  int PMPI_Keyval_free(int *keyval)
3069             __mpi_interface_deprecated__("PMPI_Keyval_free was deprecated in MPI-2.0; PMPI_Comm_free_keyval instead.");
3070 
3071 #if !defined(OMPI_COMPILING_FORTRAN_WRAPPERS)
3072 #define MPI_DUP_FN OMPI_C_MPI_DUP_FN
3073 #endif
3074 OMPI_DECLSPEC int OMPI_C_MPI_DUP_FN( MPI_Comm comm, int comm_keyval,
3075                                      void* extra_state,
3076                                      void* attribute_val_in,
3077                                      void* attribute_val_out,
3078                                      int* flag )
3079             __mpi_interface_deprecated__("MPI_DUP_FN was deprecated in MPI-2.0; use MPI_COMM_DUP_FN instead.");
3080 
3081 #if !defined(OMPI_COMPILING_FORTRAN_WRAPPERS)
3082 #define MPI_NULL_COPY_FN OMPI_C_MPI_NULL_COPY_FN
3083 #endif
3084 OMPI_DECLSPEC int OMPI_C_MPI_NULL_COPY_FN( MPI_Comm comm, int comm_keyval,
3085                                            void* extra_state,
3086                                            void* attribute_val_in,
3087                                            void* attribute_val_out,
3088                                            int* flag )
3089             __mpi_interface_deprecated__("MPI_NULL_COPY_FN was deprecated in MPI-2.0; use MPI_COMM_NULL_COPY_FN instead.");
3090 
3091 #if !defined(OMPI_COMPILING_FORTRAN_WRAPPERS)
3092 #define MPI_NULL_DELETE_FN OMPI_C_MPI_NULL_DELETE_FN
3093 #endif
3094 OMPI_DECLSPEC int OMPI_C_MPI_NULL_DELETE_FN( MPI_Comm comm, int comm_keyval,
3095                                              void* attribute_val_out,
3096                                              void* extra_state )
3097             __mpi_interface_deprecated__("MPI_NULL_DELETE_FN was deprecated in MPI-2.0; use MPI_COMM_NULL_DELETE_FN instead.");
3098 
3099 #if (!OMPI_OMIT_MPI1_COMPAT_DECLS)
3100 /*
3101  * Removed typedefs.  These typedefs are only available if Open MPI
3102  * was configured with --enable-mpi1-compatibility.
3103  *
3104  * These typedefs were formally removed from the MPI specification
3105  * and should no longer be used in MPI applications.
3106  *
3107  * Even though MPI_Handler_function is removed, we do not use the
3108  * attributes marking it as such, because otherwise the compiler
3109  * will warn for all the functions that are declared using them
3110  * (e.g., MPI_Errhandler_create).
3111  */
3112 typedef void (MPI_Handler_function)(MPI_Comm *, int *, ...);
3113 /* MPI_Handler_function was removed in MPI-3.0; use MPI_Comm_use_errhandler_function instead. */
3114 
3115 /*
3116  * Removed prototypes.  These prototypes are only available if Open
3117  * MPI was configured with --enable-mpi1-compatibility.
3118  *
3119  * These functions were formally removed from the MPI specification
3120  * and should no longer be used in MPI applications.
3121  */
3122 OMPI_DECLSPEC  int MPI_Address(void *location, MPI_Aint *address)
3123                    __mpi_interface_removed__(MPI_Address, MPI_Get_address);
3124 OMPI_DECLSPEC  int PMPI_Address(void *location, MPI_Aint *address)
3125                    __mpi_interface_removed__(PMPI_Address, PMPI_Get_address);
3126 OMPI_DECLSPEC  int MPI_Errhandler_create(MPI_Handler_function *function,
3127                                          MPI_Errhandler *errhandler)
3128                    __mpi_interface_removed__(MPI_Errhandler_create, MPI_Comm_create_errhandler);
3129 OMPI_DECLSPEC  int PMPI_Errhandler_create(MPI_Handler_function *function,
3130                                           MPI_Errhandler *errhandler)
3131                    __mpi_interface_removed__(PMPI_Errhandler_create, PMPI_Comm_create_errhandler);
3132 OMPI_DECLSPEC  int MPI_Errhandler_get(MPI_Comm comm, MPI_Errhandler *errhandler)
3133                    __mpi_interface_removed__(MPI_Errhandler_get, MPI_Comm_get_errhandler);
3134 OMPI_DECLSPEC  int PMPI_Errhandler_get(MPI_Comm comm, MPI_Errhandler *errhandler)
3135                    __mpi_interface_removed__(PMPI_Errhandler_get, PMPI_Comm_get_errhandler);
3136 OMPI_DECLSPEC  int MPI_Errhandler_set(MPI_Comm comm, MPI_Errhandler errhandler)
3137                    __mpi_interface_removed__(MPI_Errhandler_set, MPI_Comm_set_errhandler);
3138 OMPI_DECLSPEC  int PMPI_Errhandler_set(MPI_Comm comm, MPI_Errhandler errhandler)
3139                    __mpi_interface_removed__(PMPI_Errhandler_set, PMPI_Comm_set_errhandler);
3140 OMPI_DECLSPEC  int MPI_Type_extent(MPI_Datatype type, MPI_Aint *extent)
3141                    __mpi_interface_removed__(MPI_Type_extent, MPI_Type_get_extent);
3142 OMPI_DECLSPEC  int PMPI_Type_extent(MPI_Datatype type, MPI_Aint *extent)
3143                    __mpi_interface_removed__(PMPI_Type_extent, PMPI_Type_get_extent);
3144 OMPI_DECLSPEC  int MPI_Type_hindexed(int count, int array_of_blocklengths[],
3145                                      MPI_Aint array_of_displacements[],
3146                                      MPI_Datatype oldtype, MPI_Datatype *newtype)
3147                    __mpi_interface_removed__(MPI_Type_hindexed, MPI_Type_create_hindexed);
3148 OMPI_DECLSPEC  int PMPI_Type_hindexed(int count, int array_of_blocklengths[],
3149                                       MPI_Aint array_of_displacements[],
3150                                       MPI_Datatype oldtype, MPI_Datatype *newtype)
3151                    __mpi_interface_removed__(PMPI_Type_hindexed, PMPI_Type_create_hindexed);
3152 OMPI_DECLSPEC  int MPI_Type_hvector(int count, int blocklength, MPI_Aint stride,
3153                                     MPI_Datatype oldtype, MPI_Datatype *newtype)
3154                    __mpi_interface_removed__(MPI_Type_hvector, MPI_Type_create_hvector);
3155 OMPI_DECLSPEC  int PMPI_Type_hvector(int count, int blocklength, MPI_Aint stride,
3156                                      MPI_Datatype oldtype, MPI_Datatype *newtype)
3157                    __mpi_interface_removed__(PMPI_Type_hvector, PMPI_Type_create_hvector);
3158 OMPI_DECLSPEC  int MPI_Type_lb(MPI_Datatype type, MPI_Aint *lb)
3159                    __mpi_interface_removed__(MPI_Type_lb, MPI_Type_get_extent);
3160 OMPI_DECLSPEC  int PMPI_Type_lb(MPI_Datatype type, MPI_Aint *lb)
3161                    __mpi_interface_removed__(PMPI_Type_lb, PMPI_Type_get_extent);
3162 OMPI_DECLSPEC  int MPI_Type_struct(int count, int array_of_blocklengths[],
3163                                    MPI_Aint array_of_displacements[],
3164                                    MPI_Datatype array_of_types[],
3165                                    MPI_Datatype *newtype)
3166                    __mpi_interface_removed__(MPI_Type_struct, MPI_Type_create_struct);
3167 OMPI_DECLSPEC  int PMPI_Type_struct(int count, int array_of_blocklengths[],
3168                                     MPI_Aint array_of_displacements[],
3169                                     MPI_Datatype array_of_types[],
3170                                     MPI_Datatype *newtype)
3171                    __mpi_interface_removed__(PMPI_Type_struct, PMPI_Type_create_struct);
3172 OMPI_DECLSPEC  int MPI_Type_ub(MPI_Datatype mtype, MPI_Aint *ub)
3173                    __mpi_interface_removed__(MPI_Type_ub, MPI_Type_get_extent);
3174 OMPI_DECLSPEC  int PMPI_Type_ub(MPI_Datatype mtype, MPI_Aint *ub)
3175                    __mpi_interface_removed__(PMPI_Type_ub, PMPI_Type_get_extent);
3176 #endif /* !OMPI_OMIT_MPI1_COMPAT_DECLS */
3177 
3178 #if OMPI_REMOVED_USE_STATIC_ASSERT
3179 #define MPI_Address(...)  THIS_FUNCTION_WAS_REMOVED_IN_MPI30(MPI_Address, MPI_Get_address)
3180 #define MPI_Errhandler_create(...)  THIS_FUNCTION_WAS_REMOVED_IN_MPI30(MPI_Errhandler_create, MPI_Comm_create_errhandler)
3181 #define MPI_Errhandler_get(...)  THIS_FUNCTION_WAS_REMOVED_IN_MPI30(MPI_Errhandler_get, MPI_Comm_get_errhandler)
3182 #define MPI_Errhandler_set(...)  THIS_FUNCTION_WAS_REMOVED_IN_MPI30(MPI_Errhandler_set, MPI_Comm_set_errhandler)
3183 #define MPI_Type_extent(...)  THIS_FUNCTION_WAS_REMOVED_IN_MPI30(MPI_Type_extent, MPI_Type_get_extent)
3184 #define MPI_Type_hindexed(...)  THIS_FUNCTION_WAS_REMOVED_IN_MPI30(MPI_Type_hindexed, MPI_Type_create_hindexed)
3185 #define MPI_Type_hvector(...)  THIS_FUNCTION_WAS_REMOVED_IN_MPI30(MPI_Type_hvector, MPI_Type_create_hvector)
3186 #define MPI_Type_lb(...)  THIS_FUNCTION_WAS_REMOVED_IN_MPI30(MPI_Type_lb, MPI_Type_get_extent)
3187 #define MPI_Type_struct(...)  THIS_FUNCTION_WAS_REMOVED_IN_MPI30(MPI_Type_struct, MPI_Type_create_struct)
3188 #define MPI_Type_ub(...)  THIS_FUNCTION_WAS_REMOVED_IN_MPI30(MPI_Type_ub, MPI_Type_get_extent)
3189 #endif
3190 
3191 #if defined(c_plusplus) || defined(__cplusplus)
3192 }
3193 #endif
3194 
3195 #endif /* OMPI_MPI_H */