\hypertarget{bml_8h}{\section{ompi/mca/bml/bml.h File Reference}
\label{bml_8h}\index{ompi/mca/bml/bml.\+h@{ompi/mca/bml/bml.\+h}}
}


B\+M\+L Management Layer (B\+M\+L)  


{\ttfamily \#include \char`\"{}ompi\+\_\+config.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/mca/mca.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/datatype/opal\+\_\+convertor.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/mca/crs/crs.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/mca/crs/base/base.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/util/opal\+\_\+sos.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/mca/btl/btl.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/mca/bml/base/bml\+\_\+base\+\_\+btl.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/types.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/constants.\+h\char`\"{}}\\*
\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structmca__bml__base__btl__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t}
\item 
struct \hyperlink{structmca__bml__base__btl__array__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t}
\begin{DoxyCompactList}\small\item\em A dynamically growable array of \hyperlink{structmca__bml__base__btl__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t} instances. \end{DoxyCompactList}\item 
struct \hyperlink{structmca__bml__base__endpoint__t}{mca\+\_\+bml\+\_\+base\+\_\+endpoint\+\_\+t}
\begin{DoxyCompactList}\small\item\em Structure associated w/ \hyperlink{structompi__proc__t}{ompi\+\_\+proc\+\_\+t} that contains the set of B\+T\+Ls used to reach a destination. \end{DoxyCompactList}\item 
struct \hyperlink{structmca__bml__base__component__2__0__0__t}{mca\+\_\+bml\+\_\+base\+\_\+component\+\_\+2\+\_\+0\+\_\+0\+\_\+t}
\begin{DoxyCompactList}\small\item\em B\+M\+L component descriptor. \end{DoxyCompactList}\item 
struct \hyperlink{structmca__bml__base__module__t}{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+t}
\begin{DoxyCompactList}\small\item\em B\+M\+L module interface functions and attributes. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\hypertarget{bml_8h_a69d96d46411bdd46d94506b66cddece2}{\#define {\bfseries O\+P\+A\+L\+\_\+\+E\+N\+A\+B\+L\+E\+\_\+\+D\+E\+B\+U\+G\+\_\+\+R\+E\+L\+I\+A\+B\+I\+L\+I\+T\+Y}~0}\label{bml_8h_a69d96d46411bdd46d94506b66cddece2}

\item 
\#define {\bfseries M\+C\+A\+\_\+\+B\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+0}
\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\hypertarget{bml_8h_a3eebab7c0479ace0b986e6f5662cf022}{typedef struct \hyperlink{structmca__bml__base__btl__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t} {\bfseries mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t}}\label{bml_8h_a3eebab7c0479ace0b986e6f5662cf022}

\item 
\hypertarget{bml_8h_a30f311d799329fa9063aacbc7346c855}{typedef struct \\*
\hyperlink{structmca__bml__base__btl__array__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t} {\bfseries mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t}}\label{bml_8h_a30f311d799329fa9063aacbc7346c855}

\item 
\hypertarget{bml_8h_a4022de36d088ee0964d777951a9499e7}{typedef struct \\*
\hyperlink{structmca__bml__base__endpoint__t}{mca\+\_\+bml\+\_\+base\+\_\+endpoint\+\_\+t} {\bfseries mca\+\_\+bml\+\_\+base\+\_\+endpoint\+\_\+t}}\label{bml_8h_a4022de36d088ee0964d777951a9499e7}

\item 
typedef struct \\*
\hyperlink{structmca__bml__base__module__t}{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+t} $\ast$($\ast$ \hyperlink{bml_8h_ac90f0b2c5950c2833e3834662cec3783}{mca\+\_\+bml\+\_\+base\+\_\+component\+\_\+init\+\_\+fn\+\_\+t} )(int $\ast$priority, bool enable\+\_\+progress\+\_\+threads, bool enable\+\_\+mpi\+\_\+threads)
\begin{DoxyCompactList}\small\item\em M\+C\+A-\/$>$B\+M\+L Initializes the B\+M\+L component and creates specific B\+M\+L module(s). \end{DoxyCompactList}\item 
\hypertarget{bml_8h_a9dfa55f4eab0fe87d617cab353560418}{typedef struct \\*
\hyperlink{structmca__bml__base__component__2__0__0__t}{mca\+\_\+bml\+\_\+base\+\_\+component\+\_\+2\+\_\+0\+\_\+0\+\_\+t} {\bfseries mca\+\_\+bml\+\_\+base\+\_\+component\+\_\+2\+\_\+0\+\_\+0\+\_\+t}}\label{bml_8h_a9dfa55f4eab0fe87d617cab353560418}

\item 
\hypertarget{bml_8h_a95a83f8207d28e6ee3d4c19ed2057182}{typedef struct \\*
\hyperlink{structmca__bml__base__component__2__0__0__t}{mca\+\_\+bml\+\_\+base\+\_\+component\+\_\+2\+\_\+0\+\_\+0\+\_\+t} {\bfseries mca\+\_\+bml\+\_\+base\+\_\+component\+\_\+t}}\label{bml_8h_a95a83f8207d28e6ee3d4c19ed2057182}

\item 
typedef int($\ast$ \hyperlink{bml_8h_ae76c3413bf9339e0a668eb1bf3b2b3cc}{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t} )(void)
\begin{DoxyCompactList}\small\item\em M\+C\+A-\/$>$B\+M\+L Clean up any resources held by B\+M\+L module before the module is unloaded. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{bml_8h_aedb80e5cac9698fa8c8d798ae7e4531c}{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+add\+\_\+procs\+\_\+fn\+\_\+t} )(size\+\_\+t nprocs, struct \hyperlink{structompi__proc__t}{ompi\+\_\+proc\+\_\+t} $\ast$$\ast$procs, struct \hyperlink{structopal__bitmap__t}{opal\+\_\+bitmap\+\_\+t} $\ast$reachable)
\begin{DoxyCompactList}\small\item\em P\+M\+L-\/$>$B\+M\+L notification of change in the process list. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{bml_8h_a3eed76f90b3221ba1b2b29fb4392f7dc}{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+del\+\_\+procs\+\_\+fn\+\_\+t} )(size\+\_\+t nprocs, struct \hyperlink{structompi__proc__t}{ompi\+\_\+proc\+\_\+t} $\ast$$\ast$procs)
\begin{DoxyCompactList}\small\item\em Notification of change to the process list. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{bml_8h_a34f1433cfd51dae502153d655ac1b7f0}{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+add\+\_\+btl\+\_\+fn\+\_\+t} )(struct \hyperlink{structmca__btl__base__module__t}{mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$)
\begin{DoxyCompactList}\small\item\em Notification of change to the btl list. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{bml_8h_ab3a8ee5fd810672b61ecf205b07ac578}{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+del\+\_\+btl\+\_\+fn\+\_\+t} )(struct \hyperlink{structmca__btl__base__module__t}{mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$)
\begin{DoxyCompactList}\small\item\em Notification of change to the btl list. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{bml_8h_af0eeccf121d0894842829158cde5661b}{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+del\+\_\+proc\+\_\+btl\+\_\+fn\+\_\+t} )(struct \hyperlink{structompi__proc__t}{ompi\+\_\+proc\+\_\+t} $\ast$, struct \hyperlink{structmca__btl__base__module__t}{mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$)
\begin{DoxyCompactList}\small\item\em Notification of change to the btl list. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{bml_8h_a3401210c12953b951277951f28778f66}{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+register\+\_\+fn\+\_\+t} )(mca\+\_\+btl\+\_\+base\+\_\+tag\+\_\+t tag, \hyperlink{btl_8h_a6b39783709e482be956466e3a5847eff}{mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+recv\+\_\+cb\+\_\+fn\+\_\+t} cbfunc, void $\ast$cbdata)
\begin{DoxyCompactList}\small\item\em Register a callback function that is called on receipt of a fragment. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{bml_8h_ad4fa9fc3d11440af734fe44cba8b55f1}{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+register\+\_\+error\+\_\+cb\+\_\+fn\+\_\+t} )(\hyperlink{btl_8h_a3ed06ffadaf8a729d41091a671819d59}{mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+error\+\_\+cb\+\_\+fn\+\_\+t} cbfunc)
\begin{DoxyCompactList}\small\item\em Register a callback function that is called of error. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{bml_8h_a265e5296e754b13738b27f8a560f9221}{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t} )(int status)
\begin{DoxyCompactList}\small\item\em Fault Tolerance Event Notification \hyperlink{structFunction}{Function}. \end{DoxyCompactList}\item 
\hypertarget{bml_8h_a1f36f9c907e2c3400d667887dad92c5d}{typedef struct \\*
\hyperlink{structmca__bml__base__module__t}{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+t} {\bfseries mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+t}}\label{bml_8h_a1f36f9c907e2c3400d667887dad92c5d}

\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{bml_8h_a736bf6a0bd726b7c5d475089dd6b2191}{O\+M\+P\+I\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C {\bfseries O\+B\+J\+\_\+\+C\+L\+A\+S\+S\+\_\+\+D\+E\+C\+L\+A\+R\+A\+T\+I\+O\+N} (\hyperlink{structmca__bml__base__btl__array__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t})}\label{bml_8h_a736bf6a0bd726b7c5d475089dd6b2191}

\item 
static size\+\_\+t \hyperlink{bml_8h_af4f2fa4626c9dd78858cf148c10c2c95}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+get\+\_\+size} (\hyperlink{structmca__bml__base__btl__array__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t} $\ast$array)
\begin{DoxyCompactList}\small\item\em If required, reallocate (grow) the array to the indicate size. \end{DoxyCompactList}\item 
static void \hyperlink{bml_8h_a1cf143e6e866de5bea9d29bec6ac7076}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+set\+\_\+size} (\hyperlink{structmca__bml__base__btl__array__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t} $\ast$array, size\+\_\+t size)
\begin{DoxyCompactList}\small\item\em Grow the array if required, and set the size. \end{DoxyCompactList}\item 
static \hyperlink{structmca__bml__base__btl__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t} $\ast$ \hyperlink{bml_8h_a617e09f1d113fe93bb1c95d1c3e6580f}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+insert} (\hyperlink{structmca__bml__base__btl__array__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t} $\ast$array)
\begin{DoxyCompactList}\small\item\em Grow the array size by one and return the item at that index. \end{DoxyCompactList}\item 
static bool \hyperlink{bml_8h_aac9e051780f5d00c111b2ca5594e67f1}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+remove} (\hyperlink{structmca__bml__base__btl__array__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t} $\ast$array, struct \hyperlink{structmca__btl__base__module__t}{mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$btl)
\begin{DoxyCompactList}\small\item\em Remove a btl from a bml\+\_\+btl. \end{DoxyCompactList}\item 
static \hyperlink{structmca__bml__base__btl__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t} $\ast$ \hyperlink{bml_8h_a2ae93c38c7fea7327b90bf4b8d34d722}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+get\+\_\+index} (\hyperlink{structmca__bml__base__btl__array__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t} $\ast$array, size\+\_\+t item\+\_\+index)
\begin{DoxyCompactList}\small\item\em Return an array item at the specified index. \end{DoxyCompactList}\item 
static \hyperlink{structmca__bml__base__btl__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t} $\ast$ \hyperlink{bml_8h_ad32027927ff4656c64c6f76e27e7a568}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+get\+\_\+next} (\hyperlink{structmca__bml__base__btl__array__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t} $\ast$array)
\begin{DoxyCompactList}\small\item\em Return the next L\+R\+U index in the array. \end{DoxyCompactList}\item 
static \hyperlink{structmca__bml__base__btl__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t} $\ast$ \hyperlink{bml_8h_afe8b5d18189cc2818d27aeca2292a920}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+find} (\hyperlink{structmca__bml__base__btl__array__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t} $\ast$array, struct \hyperlink{structmca__btl__base__module__t}{mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$btl)
\begin{DoxyCompactList}\small\item\em Locate an element in the array. \end{DoxyCompactList}\item 
\hypertarget{bml_8h_a3a9b0a0ef088600fc723599d15173a37}{O\+M\+P\+I\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C {\bfseries O\+B\+J\+\_\+\+C\+L\+A\+S\+S\+\_\+\+D\+E\+C\+L\+A\+R\+A\+T\+I\+O\+N} (\hyperlink{structmca__bml__base__endpoint__t}{mca\+\_\+bml\+\_\+base\+\_\+endpoint\+\_\+t})}\label{bml_8h_a3a9b0a0ef088600fc723599d15173a37}

\item 
\hypertarget{bml_8h_a6483622c1a0df5538aaa72d2235b011d}{static void {\bfseries mca\+\_\+bml\+\_\+base\+\_\+alloc} (\hyperlink{structmca__bml__base__btl__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t} $\ast$bml\+\_\+btl, \hyperlink{structmca__btl__base__descriptor__t}{mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t} $\ast$$\ast$des, uint8\+\_\+t order, size\+\_\+t size, uint32\+\_\+t flags)}\label{bml_8h_a6483622c1a0df5538aaa72d2235b011d}

\item 
\hypertarget{bml_8h_a2edd84faf78741caaee0b55160d3b1b5}{static void {\bfseries mca\+\_\+bml\+\_\+base\+\_\+free} (\hyperlink{structmca__bml__base__btl__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t} $\ast$bml\+\_\+btl, \hyperlink{structmca__btl__base__descriptor__t}{mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t} $\ast$des)}\label{bml_8h_a2edd84faf78741caaee0b55160d3b1b5}

\item 
\hypertarget{bml_8h_a19e93e4eab8a3f0770b6d11a93de8878}{static int {\bfseries mca\+\_\+bml\+\_\+base\+\_\+send} (\hyperlink{structmca__bml__base__btl__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t} $\ast$bml\+\_\+btl, \hyperlink{structmca__btl__base__descriptor__t}{mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t} $\ast$des, mca\+\_\+btl\+\_\+base\+\_\+tag\+\_\+t tag)}\label{bml_8h_a19e93e4eab8a3f0770b6d11a93de8878}

\item 
\hypertarget{bml_8h_aa13de1368ff142cab94b04916ddcfba2}{static int {\bfseries mca\+\_\+bml\+\_\+base\+\_\+send\+\_\+status} (\hyperlink{structmca__bml__base__btl__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t} $\ast$bml\+\_\+btl, \hyperlink{structmca__btl__base__descriptor__t}{mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t} $\ast$des, mca\+\_\+btl\+\_\+base\+\_\+tag\+\_\+t tag)}\label{bml_8h_aa13de1368ff142cab94b04916ddcfba2}

\item 
\hypertarget{bml_8h_a68adc69b74868f542f4d2221e9de88d8}{static int {\bfseries mca\+\_\+bml\+\_\+base\+\_\+sendi} (\hyperlink{structmca__bml__base__btl__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t} $\ast$bml\+\_\+btl, struct \hyperlink{structopal__convertor__t}{opal\+\_\+convertor\+\_\+t} $\ast$convertor, void $\ast$header, size\+\_\+t header\+\_\+size, size\+\_\+t payload\+\_\+size, uint8\+\_\+t order, uint32\+\_\+t flags, mca\+\_\+btl\+\_\+base\+\_\+tag\+\_\+t tag, \hyperlink{structmca__btl__base__descriptor__t}{mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t} $\ast$$\ast$descriptor)}\label{bml_8h_a68adc69b74868f542f4d2221e9de88d8}

\item 
\hypertarget{bml_8h_a175e44c2a33efeb376fdb6deef8ca9a8}{static int {\bfseries mca\+\_\+bml\+\_\+base\+\_\+put} (\hyperlink{structmca__bml__base__btl__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t} $\ast$bml\+\_\+btl, \hyperlink{structmca__btl__base__descriptor__t}{mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t} $\ast$des)}\label{bml_8h_a175e44c2a33efeb376fdb6deef8ca9a8}

\item 
\hypertarget{bml_8h_ab570064b1aa941323f5d32008f87685e}{static int {\bfseries mca\+\_\+bml\+\_\+base\+\_\+get} (\hyperlink{structmca__bml__base__btl__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t} $\ast$bml\+\_\+btl, \hyperlink{structmca__btl__base__descriptor__t}{mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t} $\ast$des)}\label{bml_8h_ab570064b1aa941323f5d32008f87685e}

\item 
\hypertarget{bml_8h_a3689cbbacca3909567e073e645fc0640}{static void {\bfseries mca\+\_\+bml\+\_\+base\+\_\+prepare\+\_\+src} (\hyperlink{structmca__bml__base__btl__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t} $\ast$bml\+\_\+btl, \hyperlink{structmca__mpool__base__registration__t}{mca\+\_\+mpool\+\_\+base\+\_\+registration\+\_\+t} $\ast$reg, struct \hyperlink{structopal__convertor__t}{opal\+\_\+convertor\+\_\+t} $\ast$conv, uint8\+\_\+t order, size\+\_\+t reserve, size\+\_\+t $\ast$size, uint32\+\_\+t flags, \hyperlink{structmca__btl__base__descriptor__t}{mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t} $\ast$$\ast$des)}\label{bml_8h_a3689cbbacca3909567e073e645fc0640}

\item 
\hypertarget{bml_8h_acbd6e2618411a8214b2f0fe691ea0fbc}{static void {\bfseries mca\+\_\+bml\+\_\+base\+\_\+prepare\+\_\+dst} (\hyperlink{structmca__bml__base__btl__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t} $\ast$bml\+\_\+btl, \hyperlink{structmca__mpool__base__registration__t}{mca\+\_\+mpool\+\_\+base\+\_\+registration\+\_\+t} $\ast$reg, struct \hyperlink{structopal__convertor__t}{opal\+\_\+convertor\+\_\+t} $\ast$conv, uint8\+\_\+t order, size\+\_\+t reserve, size\+\_\+t $\ast$size, uint32\+\_\+t flags, \hyperlink{structmca__btl__base__descriptor__t}{mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t} $\ast$$\ast$des)}\label{bml_8h_acbd6e2618411a8214b2f0fe691ea0fbc}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
B\+M\+L Management Layer (B\+M\+L) 



\subsection{Macro Definition Documentation}
\hypertarget{bml_8h_a6f59db19d62cd253a208c0ee09758e3e}{\index{bml.\+h@{bml.\+h}!M\+C\+A\+\_\+\+B\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+0@{M\+C\+A\+\_\+\+B\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+0}}
\index{M\+C\+A\+\_\+\+B\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+0@{M\+C\+A\+\_\+\+B\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+0}!bml.\+h@{bml.\+h}}
\subsubsection[{M\+C\+A\+\_\+\+B\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+0}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\+C\+A\+\_\+\+B\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+0}}\label{bml_8h_a6f59db19d62cd253a208c0ee09758e3e}
{\bfseries Value\+:}
\begin{DoxyCode}
MCA\_BASE\_VERSION\_2\_0\_0, \(\backslash\)
  \textcolor{stringliteral}{"bml"}, 2, 0, 0
\end{DoxyCode}


\subsection{Typedef Documentation}
\hypertarget{bml_8h_ac90f0b2c5950c2833e3834662cec3783}{\index{bml.\+h@{bml.\+h}!mca\+\_\+bml\+\_\+base\+\_\+component\+\_\+init\+\_\+fn\+\_\+t@{mca\+\_\+bml\+\_\+base\+\_\+component\+\_\+init\+\_\+fn\+\_\+t}}
\index{mca\+\_\+bml\+\_\+base\+\_\+component\+\_\+init\+\_\+fn\+\_\+t@{mca\+\_\+bml\+\_\+base\+\_\+component\+\_\+init\+\_\+fn\+\_\+t}!bml.\+h@{bml.\+h}}
\subsubsection[{mca\+\_\+bml\+\_\+base\+\_\+component\+\_\+init\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+t}$\ast$($\ast$ mca\+\_\+bml\+\_\+base\+\_\+component\+\_\+init\+\_\+fn\+\_\+t)(int $\ast$priority, bool enable\+\_\+progress\+\_\+threads, bool enable\+\_\+mpi\+\_\+threads)}}\label{bml_8h_ac90f0b2c5950c2833e3834662cec3783}


M\+C\+A-\/$>$B\+M\+L Initializes the B\+M\+L component and creates specific B\+M\+L module(s). 


\begin{DoxyParams}{Parameters}
{\em num\+\_\+bmls} & (O\+U\+T) Returns the number of bml modules created, or 0 if the transport is not available.\\
\hline
{\em enable\+\_\+progress\+\_\+threads} & (I\+N) Whether this component is allowed to run a hidden/progress thread or not.\\
\hline
{\em enable\+\_\+mpi\+\_\+threads} & (I\+N) Whether support for multiple M\+P\+I threads is enabled or not (i.\+e., M\+P\+I\+\_\+\+T\+H\+R\+E\+A\+D\+\_\+\+M\+U\+L\+T\+I\+P\+L\+E), which indicates whether multiple threads may invoke this component simultaneously or not.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Array of pointers to B\+M\+L modules, or N\+U\+L\+L if the transport is not available.
\end{DoxyReturn}
During component initialization, the B\+M\+L component should discover the physical devices that are available for the given transport, and create a B\+M\+L module to represent each device. Any addressing information required by peers to reach the device should be published during this function via the mca\+\_\+base\+\_\+modex\+\_\+send() interface. \hypertarget{bml_8h_a34f1433cfd51dae502153d655ac1b7f0}{\index{bml.\+h@{bml.\+h}!mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+add\+\_\+btl\+\_\+fn\+\_\+t@{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+add\+\_\+btl\+\_\+fn\+\_\+t}}
\index{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+add\+\_\+btl\+\_\+fn\+\_\+t@{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+add\+\_\+btl\+\_\+fn\+\_\+t}!bml.\+h@{bml.\+h}}
\subsubsection[{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+add\+\_\+btl\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+add\+\_\+btl\+\_\+fn\+\_\+t)(struct {\bf mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$)}}\label{bml_8h_a34f1433cfd51dae502153d655ac1b7f0}


Notification of change to the btl list. 


\begin{DoxyParams}{Parameters}
{\em bml} & (I\+N) B\+T\+L module \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{classStatus}{Status} indicating if cleanup was successful
\end{DoxyReturn}
On recovery of a btl, add it to the set of forwarding entries used by the B\+M\+L. \hypertarget{bml_8h_aedb80e5cac9698fa8c8d798ae7e4531c}{\index{bml.\+h@{bml.\+h}!mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+add\+\_\+procs\+\_\+fn\+\_\+t@{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+add\+\_\+procs\+\_\+fn\+\_\+t}}
\index{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+add\+\_\+procs\+\_\+fn\+\_\+t@{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+add\+\_\+procs\+\_\+fn\+\_\+t}!bml.\+h@{bml.\+h}}
\subsubsection[{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+add\+\_\+procs\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+add\+\_\+procs\+\_\+fn\+\_\+t)(size\+\_\+t nprocs, struct {\bf ompi\+\_\+proc\+\_\+t} $\ast$$\ast$procs, struct {\bf opal\+\_\+bitmap\+\_\+t} $\ast$reachable)}}\label{bml_8h_aedb80e5cac9698fa8c8d798ae7e4531c}


P\+M\+L-\/$>$B\+M\+L notification of change in the process list. 


\begin{DoxyParams}{Parameters}
{\em nprocs} & (I\+N) Number of processes \\
\hline
{\em procs} & (I\+N) Set of processes \\
\hline
{\em reachable} & (O\+U\+T) Bitmask indicating set of peer processes that are reachable by this B\+M\+L. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S or error status on failure.
\end{DoxyReturn}
The \hyperlink{bml_8h_aedb80e5cac9698fa8c8d798ae7e4531c}{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+add\+\_\+procs\+\_\+fn\+\_\+t()} is called by the P\+M\+L to determine the set of B\+M\+Ls that should be used to reach each process. Any addressing information exported by the peer via the mca\+\_\+base\+\_\+modex\+\_\+send() function should be available during this call via the corresponding mca\+\_\+base\+\_\+modex\+\_\+recv() function. The B\+M\+L may utilize this information to determine reachability of each peer process.

For each process that is reachable by the B\+M\+L, the bit corresponding to the index into the proc array (nprocs) should be set in the reachable bitmask. The P\+M\+L provides the B\+M\+L the option to return a pointer to a data structure defined by the B\+M\+L that is returned to the B\+M\+L on subsequent calls to the B\+M\+L data transfer functions (e.\+g bml\+\_\+send). This may be used by the B\+M\+L to cache any addressing or connection information (e.\+g. T\+C\+P socket, I\+P queue pair).

\begin{DoxyNote}{Note}
This function will return O\+M\+P\+I\+\_\+\+E\+R\+R\+\_\+\+U\+N\+R\+E\+A\+C\+H if one or more processes can not be reached by the currently active B\+T\+Ls. This is not a fatal error, and the calling layer is free to continue using the B\+M\+L interface. 
\end{DoxyNote}
\hypertarget{bml_8h_ab3a8ee5fd810672b61ecf205b07ac578}{\index{bml.\+h@{bml.\+h}!mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+del\+\_\+btl\+\_\+fn\+\_\+t@{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+del\+\_\+btl\+\_\+fn\+\_\+t}}
\index{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+del\+\_\+btl\+\_\+fn\+\_\+t@{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+del\+\_\+btl\+\_\+fn\+\_\+t}!bml.\+h@{bml.\+h}}
\subsubsection[{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+del\+\_\+btl\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+del\+\_\+btl\+\_\+fn\+\_\+t)(struct {\bf mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$)}}\label{bml_8h_ab3a8ee5fd810672b61ecf205b07ac578}


Notification of change to the btl list. 


\begin{DoxyParams}{Parameters}
{\em bml} & (I\+N) B\+T\+L module \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{classStatus}{Status} indicating if cleanup was successful
\end{DoxyReturn}
On failure of a btl, remove it from the set of forwarding entries used by the B\+M\+L. \hypertarget{bml_8h_af0eeccf121d0894842829158cde5661b}{\index{bml.\+h@{bml.\+h}!mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+del\+\_\+proc\+\_\+btl\+\_\+fn\+\_\+t@{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+del\+\_\+proc\+\_\+btl\+\_\+fn\+\_\+t}}
\index{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+del\+\_\+proc\+\_\+btl\+\_\+fn\+\_\+t@{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+del\+\_\+proc\+\_\+btl\+\_\+fn\+\_\+t}!bml.\+h@{bml.\+h}}
\subsubsection[{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+del\+\_\+proc\+\_\+btl\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+del\+\_\+proc\+\_\+btl\+\_\+fn\+\_\+t)(struct {\bf ompi\+\_\+proc\+\_\+t} $\ast$, struct {\bf mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$)}}\label{bml_8h_af0eeccf121d0894842829158cde5661b}


Notification of change to the btl list. 


\begin{DoxyParams}{Parameters}
{\em bml} & (I\+N) B\+T\+L module \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{classStatus}{Status} indicating if cleanup was successful
\end{DoxyReturn}
On failure of a btl, remove it from the set of forwarding entries used by the B\+M\+L. \hypertarget{bml_8h_a3eed76f90b3221ba1b2b29fb4392f7dc}{\index{bml.\+h@{bml.\+h}!mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+del\+\_\+procs\+\_\+fn\+\_\+t@{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+del\+\_\+procs\+\_\+fn\+\_\+t}}
\index{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+del\+\_\+procs\+\_\+fn\+\_\+t@{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+del\+\_\+procs\+\_\+fn\+\_\+t}!bml.\+h@{bml.\+h}}
\subsubsection[{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+del\+\_\+procs\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+del\+\_\+procs\+\_\+fn\+\_\+t)(size\+\_\+t nprocs, struct {\bf ompi\+\_\+proc\+\_\+t} $\ast$$\ast$procs)}}\label{bml_8h_a3eed76f90b3221ba1b2b29fb4392f7dc}


Notification of change to the process list. 


\begin{DoxyParams}{Parameters}
{\em nprocs} & (I\+N) Number of processes \\
\hline
{\em proc} & (I\+N) Set of processes \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{classStatus}{Status} indicating if cleanup was successful
\end{DoxyReturn}
When the process list changes, the P\+M\+L notifies the B\+M\+L of the change, to provide the opportunity to cleanup or release any resources associated with the peer. \hypertarget{bml_8h_ae76c3413bf9339e0a668eb1bf3b2b3cc}{\index{bml.\+h@{bml.\+h}!mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t@{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t}}
\index{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t@{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t}!bml.\+h@{bml.\+h}}
\subsubsection[{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t)(void)}}\label{bml_8h_ae76c3413bf9339e0a668eb1bf3b2b3cc}


M\+C\+A-\/$>$B\+M\+L Clean up any resources held by B\+M\+L module before the module is unloaded. 


\begin{DoxyParams}{Parameters}
{\em bml} & (I\+N) B\+M\+L module.\\
\hline
\end{DoxyParams}
Prior to unloading a B\+M\+L module, the M\+C\+A framework will call the B\+M\+L finalize method of the module. Any resources held by the B\+M\+L should be released and if required the memory corresponding to the B\+M\+L module freed. \hypertarget{bml_8h_a265e5296e754b13738b27f8a560f9221}{\index{bml.\+h@{bml.\+h}!mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t@{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t}}
\index{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t@{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t}!bml.\+h@{bml.\+h}}
\subsubsection[{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t)(int status)}}\label{bml_8h_a265e5296e754b13738b27f8a560f9221}


Fault Tolerance Event Notification \hyperlink{structFunction}{Function}. 


\begin{DoxyParams}{Parameters}
{\em status} & Checkpoint \hyperlink{classStatus}{Status} \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S or failure status 
\end{DoxyReturn}
\hypertarget{bml_8h_ad4fa9fc3d11440af734fe44cba8b55f1}{\index{bml.\+h@{bml.\+h}!mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+register\+\_\+error\+\_\+cb\+\_\+fn\+\_\+t@{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+register\+\_\+error\+\_\+cb\+\_\+fn\+\_\+t}}
\index{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+register\+\_\+error\+\_\+cb\+\_\+fn\+\_\+t@{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+register\+\_\+error\+\_\+cb\+\_\+fn\+\_\+t}!bml.\+h@{bml.\+h}}
\subsubsection[{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+register\+\_\+error\+\_\+cb\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+register\+\_\+error\+\_\+cb\+\_\+fn\+\_\+t)({\bf mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+error\+\_\+cb\+\_\+fn\+\_\+t} cbfunc)}}\label{bml_8h_ad4fa9fc3d11440af734fe44cba8b55f1}


Register a callback function that is called of error. 


\begin{DoxyParams}{Parameters}
{\em bml} & (I\+N) B\+M\+L module \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{classStatus}{Status} indicating if cleanup was successful 
\end{DoxyReturn}
\hypertarget{bml_8h_a3401210c12953b951277951f28778f66}{\index{bml.\+h@{bml.\+h}!mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+register\+\_\+fn\+\_\+t@{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+register\+\_\+fn\+\_\+t}}
\index{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+register\+\_\+fn\+\_\+t@{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+register\+\_\+fn\+\_\+t}!bml.\+h@{bml.\+h}}
\subsubsection[{mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+register\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+bml\+\_\+base\+\_\+module\+\_\+register\+\_\+fn\+\_\+t)(mca\+\_\+btl\+\_\+base\+\_\+tag\+\_\+t tag, {\bf mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+recv\+\_\+cb\+\_\+fn\+\_\+t} cbfunc, void $\ast$cbdata)}}\label{bml_8h_a3401210c12953b951277951f28778f66}


Register a callback function that is called on receipt of a fragment. 


\begin{DoxyParams}{Parameters}
{\em bml} & (I\+N) B\+M\+L module \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{classStatus}{Status} indicating if cleanup was successful
\end{DoxyReturn}
When the process list changes, the P\+M\+L notifies the B\+M\+L of the change, to provide the opportunity to cleanup or release any resources associated with the peer. 

\subsection{Function Documentation}
\hypertarget{bml_8h_afe8b5d18189cc2818d27aeca2292a920}{\index{bml.\+h@{bml.\+h}!mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+find@{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+find}}
\index{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+find@{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+find}!bml.\+h@{bml.\+h}}
\subsubsection[{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+find}]{\setlength{\rightskip}{0pt plus 5cm}static {\bf mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t}$\ast$ mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+find (
\begin{DoxyParamCaption}
\item[{{\bf mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t} $\ast$}]{array, }
\item[{struct {\bf mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$}]{btl}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{bml_8h_afe8b5d18189cc2818d27aeca2292a920}


Locate an element in the array. 


\begin{DoxyParams}{Parameters}
{\em array} & (I\+N) \\
\hline
{\em index} & (I\+N) \\
\hline
\end{DoxyParams}


References mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t\+::arr\+\_\+size, mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t\+::bml\+\_\+btls, and mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t\+::btl.



Referenced by mca\+\_\+pml\+\_\+bfo\+\_\+error\+\_\+pending\+\_\+packets().

\hypertarget{bml_8h_a2ae93c38c7fea7327b90bf4b8d34d722}{\index{bml.\+h@{bml.\+h}!mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+get\+\_\+index@{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+get\+\_\+index}}
\index{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+get\+\_\+index@{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+get\+\_\+index}!bml.\+h@{bml.\+h}}
\subsubsection[{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+get\+\_\+index}]{\setlength{\rightskip}{0pt plus 5cm}static {\bf mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t}$\ast$ mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+get\+\_\+index (
\begin{DoxyParamCaption}
\item[{{\bf mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t} $\ast$}]{array, }
\item[{size\+\_\+t}]{item\+\_\+index}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{bml_8h_a2ae93c38c7fea7327b90bf4b8d34d722}


Return an array item at the specified index. 


\begin{DoxyParams}{Parameters}
{\em array} & (I\+N) \\
\hline
{\em item\+\_\+index} & (I\+N) \\
\hline
\end{DoxyParams}


References mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t\+::arr\+\_\+size, mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t\+::bml\+\_\+btls, and opal\+\_\+output().

\hypertarget{bml_8h_ad32027927ff4656c64c6f76e27e7a568}{\index{bml.\+h@{bml.\+h}!mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+get\+\_\+next@{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+get\+\_\+next}}
\index{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+get\+\_\+next@{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+get\+\_\+next}!bml.\+h@{bml.\+h}}
\subsubsection[{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+get\+\_\+next}]{\setlength{\rightskip}{0pt plus 5cm}static {\bf mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t}$\ast$ mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+get\+\_\+next (
\begin{DoxyParamCaption}
\item[{{\bf mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t} $\ast$}]{array}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{bml_8h_ad32027927ff4656c64c6f76e27e7a568}


Return the next L\+R\+U index in the array. 


\begin{DoxyParams}{Parameters}
{\em array} & (I\+N)\\
\hline
{\em index} & (O\+U\+T) \\
\hline
\end{DoxyParams}


References mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t\+::arr\+\_\+index, mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t\+::arr\+\_\+size, mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t\+::bml\+\_\+btls, and opal\+\_\+output().



Referenced by mca\+\_\+pml\+\_\+bfo\+\_\+error\+\_\+pending\+\_\+packets(), mca\+\_\+pml\+\_\+bfo\+\_\+recv\+\_\+request\+\_\+recverrnotify(), mca\+\_\+pml\+\_\+bfo\+\_\+recv\+\_\+request\+\_\+rndvrestartack(), mca\+\_\+pml\+\_\+bfo\+\_\+recv\+\_\+request\+\_\+rndvrestartnack(), mca\+\_\+pml\+\_\+bfo\+\_\+repost\+\_\+fin(), mca\+\_\+pml\+\_\+bfo\+\_\+repost\+\_\+match\+\_\+fragment(), mca\+\_\+pml\+\_\+bfo\+\_\+send\+\_\+request\+\_\+restart(), and mca\+\_\+pml\+\_\+bfo\+\_\+send\+\_\+request\+\_\+rndvrestartnotify().

\hypertarget{bml_8h_af4f2fa4626c9dd78858cf148c10c2c95}{\index{bml.\+h@{bml.\+h}!mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+get\+\_\+size@{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+get\+\_\+size}}
\index{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+get\+\_\+size@{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+get\+\_\+size}!bml.\+h@{bml.\+h}}
\subsubsection[{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+get\+\_\+size}]{\setlength{\rightskip}{0pt plus 5cm}static size\+\_\+t mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+get\+\_\+size (
\begin{DoxyParamCaption}
\item[{{\bf mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t} $\ast$}]{array}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{bml_8h_af4f2fa4626c9dd78858cf148c10c2c95}


If required, reallocate (grow) the array to the indicate size. 


\begin{DoxyParams}{Parameters}
{\em array} & (I\+N) \\
\hline
{\em size} & (I\+N) \\
\hline
\end{DoxyParams}


References mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t\+::arr\+\_\+size.



Referenced by mca\+\_\+pml\+\_\+bfo\+\_\+send\+\_\+request\+\_\+restart().

\hypertarget{bml_8h_a617e09f1d113fe93bb1c95d1c3e6580f}{\index{bml.\+h@{bml.\+h}!mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+insert@{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+insert}}
\index{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+insert@{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+insert}!bml.\+h@{bml.\+h}}
\subsubsection[{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+insert}]{\setlength{\rightskip}{0pt plus 5cm}static {\bf mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t}$\ast$ mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+insert (
\begin{DoxyParamCaption}
\item[{{\bf mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t} $\ast$}]{array}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{bml_8h_a617e09f1d113fe93bb1c95d1c3e6580f}


Grow the array size by one and return the item at that index. 


\begin{DoxyParams}{Parameters}
{\em array} & (I\+N) \\
\hline
\end{DoxyParams}


References mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t\+::arr\+\_\+reserve, mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t\+::arr\+\_\+size, mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t\+::bml\+\_\+btls, and opal\+\_\+output().

\hypertarget{bml_8h_aac9e051780f5d00c111b2ca5594e67f1}{\index{bml.\+h@{bml.\+h}!mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+remove@{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+remove}}
\index{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+remove@{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+remove}!bml.\+h@{bml.\+h}}
\subsubsection[{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+remove}]{\setlength{\rightskip}{0pt plus 5cm}static bool mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+remove (
\begin{DoxyParamCaption}
\item[{{\bf mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t} $\ast$}]{array, }
\item[{struct {\bf mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$}]{btl}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{bml_8h_aac9e051780f5d00c111b2ca5594e67f1}


Remove a btl from a bml\+\_\+btl. 


\begin{DoxyParams}{Parameters}
{\em array} & (I\+N) \\
\hline
{\em btl} & (I\+N) \\
\hline
\end{DoxyParams}


References mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t\+::arr\+\_\+index, mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t\+::arr\+\_\+size, mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t\+::bml\+\_\+btls, and mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t\+::btl.

\hypertarget{bml_8h_a1cf143e6e866de5bea9d29bec6ac7076}{\index{bml.\+h@{bml.\+h}!mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+set\+\_\+size@{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+set\+\_\+size}}
\index{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+set\+\_\+size@{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+set\+\_\+size}!bml.\+h@{bml.\+h}}
\subsubsection[{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+set\+\_\+size}]{\setlength{\rightskip}{0pt plus 5cm}static void mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+set\+\_\+size (
\begin{DoxyParamCaption}
\item[{{\bf mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t} $\ast$}]{array, }
\item[{size\+\_\+t}]{size}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{bml_8h_a1cf143e6e866de5bea9d29bec6ac7076}


Grow the array if required, and set the size. 


\begin{DoxyParams}{Parameters}
{\em array} & (I\+N) \\
\hline
{\em size} & (I\+N) \\
\hline
\end{DoxyParams}


References mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t\+::arr\+\_\+reserve, and mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+array\+\_\+t\+::arr\+\_\+size.

