Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 10:35:53

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