/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi/opal/mca
Edit: /usr/lib/x86_64-linux-gnu/openmpi/include/openmpi/opal/mca/mca.h (16704B)
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
/*
* Copyright (c) 2004-2008 The Trustees of Indiana University and Indiana
* University Research and Technology
* Corporation. All rights reserved.
* Copyright (c) 2004-2005 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights
* reserved.
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* Copyright (c) 2008-2012 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2015-2016 Los Alamos National Security, LLC. All rights
* reserved.
* Copyright (c) 2016-2017 IBM Corporation. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
/**
* @file
*
* Top-level interface for \em all MCA components.
*
* Historical notes:
*
* Open MPI originally used a v1.0.0 of the MCA component structs, but
* did not have a version number in the struct name. If I recall
* correctly, this is because we simply didn't think through (or never
* envisioned) changing the MCA base component struct itself. Oops.
*
* We made some changes in the base struct in Open MPI v1.3, and
* decided the following at the same time:
*
* - Bump the MCA version number to 2.0.0 and add some "reserved"
* space at the end of the struct.
* - The major MCA version number is essentially tied to the space
* that the struct occupies; if we make future changes in the struct
* by just using some of the reserved space, it may be possible to
* just increment the minor version number (depending on the scope of
* the change). If we need to add more space to the struct, we'll
* increment the major version number.
* - The MCA base component struct now has a version number in it
* (starting with Open MPI v1.3, it is 2.0.0).
* - As was an unstated assumption in prior versions of Open MPI, the
* unversioned versions of struct names (both in the MCA base and in
* individual framework bases) are intended for components who want
* to be forward source-compatible. That is, the unversioned struct
* name always represents the most recent interface version. If you
* need to use an older version, you can explicitly use that older
* struct version name. Please note, however, the Open MPI
* developers may not generally provide older versions of framework
* interface structs unless they know if someone outside of the Open
* MPI community needs it.
*
* ***IF YOU NEED BACKWARDS SOURCE OR BINARY COMPATIBILITY, you must
* let us know!***
*
* - We are currently only aware of one external developer making Open
* MPI components for the v1.2 series. He already knows that there
* are major changes coming in the v1.3 series, and does not expect to
* be able to use his v1.2 DSO binaries in v1.3. As such, we are
* breaking backwards binary compatibility in v1.3: there is no
* possibility of loading an MCA v1.0 binary component in Open MPI
* v1.3 or beyond (source compatibility is much easier -- the binary
* "refuse to load MCA components