\hypertarget{btl__self_8h}{\section{ompi/mca/btl/self/btl\+\_\+self.h File Reference}
\label{btl__self_8h}\index{ompi/mca/btl/self/btl\+\_\+self.\+h@{ompi/mca/btl/self/btl\+\_\+self.\+h}}
}
{\ttfamily \#include \char`\"{}ompi\+\_\+config.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/mca/event/event.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/class/ompi\+\_\+free\+\_\+list.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/mca/btl/btl.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/mca/btl/base/base.\+h\char`\"{}}\\*
\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structmca__btl__self__component__t}{mca\+\_\+btl\+\_\+self\+\_\+component\+\_\+t}
\begin{DoxyCompactList}\small\item\em Shared Memory (S\+E\+L\+F) B\+T\+L module. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\hypertarget{btl__self_8h_a38fae741199b46166c90cce1fce7e9c6}{typedef struct \\*
\hyperlink{structmca__btl__self__component__t}{mca\+\_\+btl\+\_\+self\+\_\+component\+\_\+t} {\bfseries mca\+\_\+btl\+\_\+self\+\_\+component\+\_\+t}}\label{btl__self_8h_a38fae741199b46166c90cce1fce7e9c6}

\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{btl__self_8h_a8a071f8f616f2b9d73355b585fe199bb}{int \hyperlink{btl__self_8h_a8a071f8f616f2b9d73355b585fe199bb}{mca\+\_\+btl\+\_\+self\+\_\+component\+\_\+open} (void)}\label{btl__self_8h_a8a071f8f616f2b9d73355b585fe199bb}

\begin{DoxyCompactList}\small\item\em Register shared memory module parameters with the M\+C\+A framework. \end{DoxyCompactList}\item 
\hypertarget{btl__self_8h_ac2b3999676390bdd98f8c284e54c716d}{int \hyperlink{btl__self_8h_ac2b3999676390bdd98f8c284e54c716d}{mca\+\_\+btl\+\_\+self\+\_\+component\+\_\+close} (void)}\label{btl__self_8h_ac2b3999676390bdd98f8c284e54c716d}

\begin{DoxyCompactList}\small\item\em Any final cleanup before being unloaded. \end{DoxyCompactList}\item 
\hyperlink{structmca__btl__base__module__t}{mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$$\ast$ \hyperlink{btl__self_8h_a47a61daf008bd0fa361135eec1417d8c}{mca\+\_\+btl\+\_\+self\+\_\+component\+\_\+init} (int $\ast$num\+\_\+btls, bool enable\+\_\+progress\+\_\+threads, bool enable\+\_\+mpi\+\_\+threads)
\begin{DoxyCompactList}\small\item\em S\+E\+L\+F module initialization. \end{DoxyCompactList}\item 
int \hyperlink{btl__self_8h_a938866d822d90d31c8d445f366aa76eb}{mca\+\_\+btl\+\_\+self\+\_\+finalize} (struct \hyperlink{structmca__btl__base__module__t}{mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$btl)
\begin{DoxyCompactList}\small\item\em Cleanup any resources held by the B\+T\+L. \end{DoxyCompactList}\item 
int \hyperlink{btl__self_8h_a7c03d074f70987fb078338813798eda0}{mca\+\_\+btl\+\_\+self\+\_\+add\+\_\+procs} (struct \hyperlink{structmca__btl__base__module__t}{mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$btl, size\+\_\+t nprocs, struct \hyperlink{structompi__proc__t}{ompi\+\_\+proc\+\_\+t} $\ast$$\ast$procs, struct \hyperlink{structmca__btl__base__endpoint__t}{mca\+\_\+btl\+\_\+base\+\_\+endpoint\+\_\+t} $\ast$$\ast$peers, struct \hyperlink{structopal__bitmap__t}{opal\+\_\+bitmap\+\_\+t} $\ast$reachability)
\begin{DoxyCompactList}\small\item\em P\+M\+L-\/$>$B\+T\+L notification of change in the process list. \end{DoxyCompactList}\item 
int \hyperlink{btl__self_8h_a6e6e3449c9ecd37ba2cb7b611591bdb6}{mca\+\_\+btl\+\_\+self\+\_\+del\+\_\+procs} (struct \hyperlink{structmca__btl__base__module__t}{mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$btl, size\+\_\+t nprocs, struct \hyperlink{structompi__proc__t}{ompi\+\_\+proc\+\_\+t} $\ast$$\ast$procs, struct \hyperlink{structmca__btl__base__endpoint__t}{mca\+\_\+btl\+\_\+base\+\_\+endpoint\+\_\+t} $\ast$$\ast$peers)
\begin{DoxyCompactList}\small\item\em P\+M\+L-\/$>$B\+T\+L notification of change in the process list. \end{DoxyCompactList}\item 
\hyperlink{structmca__btl__base__descriptor__t}{mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t} $\ast$ \hyperlink{btl__self_8h_a6a66d5cf8d174796bc9bc63308e1973f}{mca\+\_\+btl\+\_\+self\+\_\+alloc} (struct \hyperlink{structmca__btl__base__module__t}{mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$btl, struct \hyperlink{structmca__btl__base__endpoint__t}{mca\+\_\+btl\+\_\+base\+\_\+endpoint\+\_\+t} $\ast$endpoint, uint8\+\_\+t order, size\+\_\+t size, uint32\+\_\+t flags)
\begin{DoxyCompactList}\small\item\em Allocate a segment. \end{DoxyCompactList}\item 
int \hyperlink{btl__self_8h_ab69f604c99d7b3a5b700bce842c89ce9}{mca\+\_\+btl\+\_\+self\+\_\+free} (struct \hyperlink{structmca__btl__base__module__t}{mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$btl, \hyperlink{structmca__btl__base__descriptor__t}{mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t} $\ast$segment)
\begin{DoxyCompactList}\small\item\em Return a segment allocated by this B\+T\+L. \end{DoxyCompactList}\item 
struct \hyperlink{structmca__btl__base__descriptor__t}{mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t} $\ast$ \hyperlink{btl__self_8h_aa01ab26dd137fa4e3acc082b371c83c4}{mca\+\_\+btl\+\_\+self\+\_\+prepare\+\_\+src} (struct \hyperlink{structmca__btl__base__module__t}{mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$btl, struct \hyperlink{structmca__btl__base__endpoint__t}{mca\+\_\+btl\+\_\+base\+\_\+endpoint\+\_\+t} $\ast$endpoint, struct \hyperlink{structmca__mpool__base__registration__t}{mca\+\_\+mpool\+\_\+base\+\_\+registration\+\_\+t} $\ast$registration, struct \hyperlink{structopal__convertor__t}{opal\+\_\+convertor\+\_\+t} $\ast$convertor, uint8\+\_\+t order, size\+\_\+t reserve, size\+\_\+t $\ast$size, uint32\+\_\+t flags)
\begin{DoxyCompactList}\small\item\em Pack data. \end{DoxyCompactList}\item 
struct \hyperlink{structmca__btl__base__descriptor__t}{mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t} $\ast$ \hyperlink{btl__self_8h_acc0472ed36de0e4d73d7e3401c845533}{mca\+\_\+btl\+\_\+self\+\_\+prepare\+\_\+dst} (struct \hyperlink{structmca__btl__base__module__t}{mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$btl, struct \hyperlink{structmca__btl__base__endpoint__t}{mca\+\_\+btl\+\_\+base\+\_\+endpoint\+\_\+t} $\ast$endpoint, struct \hyperlink{structmca__mpool__base__registration__t}{mca\+\_\+mpool\+\_\+base\+\_\+registration\+\_\+t} $\ast$registration, struct \hyperlink{structopal__convertor__t}{opal\+\_\+convertor\+\_\+t} $\ast$convertor, uint8\+\_\+t order, size\+\_\+t reserve, size\+\_\+t $\ast$size, uint32\+\_\+t flags)
\begin{DoxyCompactList}\small\item\em Prepare data for R\+D\+M\+A. \end{DoxyCompactList}\item 
int \hyperlink{btl__self_8h_a1a4ddbdbe0580e3c3c142a54db0baf25}{mca\+\_\+btl\+\_\+self\+\_\+send} (struct \hyperlink{structmca__btl__base__module__t}{mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$btl, struct \hyperlink{structmca__btl__base__endpoint__t}{mca\+\_\+btl\+\_\+base\+\_\+endpoint\+\_\+t} $\ast$endpoint, struct \hyperlink{structmca__btl__base__descriptor__t}{mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t} $\ast$descriptor, mca\+\_\+btl\+\_\+base\+\_\+tag\+\_\+t tag)
\begin{DoxyCompactList}\small\item\em Initiate a send to the peer. \end{DoxyCompactList}\item 
int \hyperlink{btl__self_8h_ae0861525f7fc108179d13a6aca3e944c}{mca\+\_\+btl\+\_\+self\+\_\+rdma} (struct \hyperlink{structmca__btl__base__module__t}{mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$btl, struct \hyperlink{structmca__btl__base__endpoint__t}{mca\+\_\+btl\+\_\+base\+\_\+endpoint\+\_\+t} $\ast$endpoint, struct \hyperlink{structmca__btl__base__descriptor__t}{mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t} $\ast$descriptor)
\begin{DoxyCompactList}\small\item\em Initiate a put to the peer. \end{DoxyCompactList}\item 
int \hyperlink{btl__self_8h_a0c3dcd779edf4bc5df1ffcb626df76ae}{mca\+\_\+btl\+\_\+self\+\_\+ft\+\_\+event} (int state)
\begin{DoxyCompactList}\small\item\em Fault Tolerance Event Notification \hyperlink{structFunction}{Function}. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\hypertarget{btl__self_8h_a069f74f239204478ae496b230bd657ab}{O\+M\+P\+I\+\_\+\+M\+O\+D\+U\+L\+E\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C \\*
\hyperlink{structmca__btl__self__component__t}{mca\+\_\+btl\+\_\+self\+\_\+component\+\_\+t} {\bfseries mca\+\_\+btl\+\_\+self\+\_\+component}}\label{btl__self_8h_a069f74f239204478ae496b230bd657ab}

\item 
\hypertarget{btl__self_8h_a7f5b797c38c4e7250b697795336b1864}{\hyperlink{structmca__btl__base__module__t}{mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} {\bfseries mca\+\_\+btl\+\_\+self}}\label{btl__self_8h_a7f5b797c38c4e7250b697795336b1864}

\end{DoxyCompactItemize}


\subsection{Function Documentation}
\hypertarget{btl__self_8h_a7c03d074f70987fb078338813798eda0}{\index{btl\+\_\+self.\+h@{btl\+\_\+self.\+h}!mca\+\_\+btl\+\_\+self\+\_\+add\+\_\+procs@{mca\+\_\+btl\+\_\+self\+\_\+add\+\_\+procs}}
\index{mca\+\_\+btl\+\_\+self\+\_\+add\+\_\+procs@{mca\+\_\+btl\+\_\+self\+\_\+add\+\_\+procs}!btl\+\_\+self.\+h@{btl\+\_\+self.\+h}}
\subsubsection[{mca\+\_\+btl\+\_\+self\+\_\+add\+\_\+procs}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+btl\+\_\+self\+\_\+add\+\_\+procs (
\begin{DoxyParamCaption}
\item[{struct {\bf mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$}]{btl, }
\item[{size\+\_\+t}]{nprocs, }
\item[{struct {\bf ompi\+\_\+proc\+\_\+t} $\ast$$\ast$}]{procs, }
\item[{struct {\bf mca\+\_\+btl\+\_\+base\+\_\+endpoint\+\_\+t} $\ast$$\ast$}]{peers, }
\item[{struct {\bf opal\+\_\+bitmap\+\_\+t} $\ast$}]{reachability}
\end{DoxyParamCaption}
)}}\label{btl__self_8h_a7c03d074f70987fb078338813798eda0}


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

P\+M\+L-\/$>$B\+T\+L Notification that a receive fragment has been matched. Called for message that is send from process with the virtual address of the shared memory segment being different than that of the receiver.


\begin{DoxyParams}{Parameters}
{\em btl} & (I\+N) \\
\hline
{\em proc} & (I\+N) \\
\hline
{\em peer} & (O\+U\+T) \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S or error status on failure. 
\end{DoxyReturn}


References ompi\+\_\+proc\+\_\+local\+\_\+proc, and opal\+\_\+bitmap\+\_\+set\+\_\+bit().

\hypertarget{btl__self_8h_a6a66d5cf8d174796bc9bc63308e1973f}{\index{btl\+\_\+self.\+h@{btl\+\_\+self.\+h}!mca\+\_\+btl\+\_\+self\+\_\+alloc@{mca\+\_\+btl\+\_\+self\+\_\+alloc}}
\index{mca\+\_\+btl\+\_\+self\+\_\+alloc@{mca\+\_\+btl\+\_\+self\+\_\+alloc}!btl\+\_\+self.\+h@{btl\+\_\+self.\+h}}
\subsubsection[{mca\+\_\+btl\+\_\+self\+\_\+alloc}]{\setlength{\rightskip}{0pt plus 5cm}{\bf mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t}$\ast$ mca\+\_\+btl\+\_\+self\+\_\+alloc (
\begin{DoxyParamCaption}
\item[{struct {\bf mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$}]{btl, }
\item[{struct {\bf mca\+\_\+btl\+\_\+base\+\_\+endpoint\+\_\+t} $\ast$}]{endpoint, }
\item[{uint8\+\_\+t}]{order, }
\item[{size\+\_\+t}]{size, }
\item[{uint32\+\_\+t}]{flags}
\end{DoxyParamCaption}
)}}\label{btl__self_8h_a6a66d5cf8d174796bc9bc63308e1973f}


Allocate a segment. 


\begin{DoxyParams}{Parameters}
{\em btl} & (I\+N) B\+T\+L module \\
\hline
{\em size} & (I\+N) \hyperlink{classRequest}{Request} segment size. \\
\hline
\end{DoxyParams}


References mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t\+::btl\+\_\+eager\+\_\+limit, mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+flags, mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+src, mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+src\+\_\+cnt, and mca\+\_\+btl\+\_\+base\+\_\+segment\+\_\+t\+::seg\+\_\+len.

\hypertarget{btl__self_8h_a47a61daf008bd0fa361135eec1417d8c}{\index{btl\+\_\+self.\+h@{btl\+\_\+self.\+h}!mca\+\_\+btl\+\_\+self\+\_\+component\+\_\+init@{mca\+\_\+btl\+\_\+self\+\_\+component\+\_\+init}}
\index{mca\+\_\+btl\+\_\+self\+\_\+component\+\_\+init@{mca\+\_\+btl\+\_\+self\+\_\+component\+\_\+init}!btl\+\_\+self.\+h@{btl\+\_\+self.\+h}}
\subsubsection[{mca\+\_\+btl\+\_\+self\+\_\+component\+\_\+init}]{\setlength{\rightskip}{0pt plus 5cm}{\bf mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t}$\ast$$\ast$ mca\+\_\+btl\+\_\+self\+\_\+component\+\_\+init (
\begin{DoxyParamCaption}
\item[{int $\ast$}]{num\+\_\+btls, }
\item[{bool}]{enable\+\_\+progress\+\_\+threads, }
\item[{bool}]{enable\+\_\+mpi\+\_\+threads}
\end{DoxyParamCaption}
)}}\label{btl__self_8h_a47a61daf008bd0fa361135eec1417d8c}


S\+E\+L\+F module initialization. 


\begin{DoxyParams}{Parameters}
{\em num\+\_\+btls} & (O\+U\+T) Number of B\+T\+Ls returned in B\+T\+L array. \\
\hline
{\em enable\+\_\+progress\+\_\+threads} & (I\+N) Flag indicating whether B\+T\+L is allowed to have progress threads \\
\hline
{\em enable\+\_\+mpi\+\_\+threads} & (I\+N) Flag indicating whether B\+T\+L must support multilple simultaneous invocations from different threads \\
\hline
\end{DoxyParams}


References mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t\+::btl\+\_\+eager\+\_\+limit, mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t\+::btl\+\_\+max\+\_\+send\+\_\+size, mca\+\_\+btl\+\_\+self\+\_\+component\+\_\+t\+::free\+\_\+list\+\_\+inc, mca\+\_\+btl\+\_\+self\+\_\+component\+\_\+t\+::free\+\_\+list\+\_\+max, mca\+\_\+btl\+\_\+self\+\_\+component\+\_\+t\+::free\+\_\+list\+\_\+num, O\+B\+J\+\_\+\+C\+L\+A\+S\+S, mca\+\_\+btl\+\_\+self\+\_\+component\+\_\+t\+::self\+\_\+frags\+\_\+eager, mca\+\_\+btl\+\_\+self\+\_\+component\+\_\+t\+::self\+\_\+frags\+\_\+rdma, and mca\+\_\+btl\+\_\+self\+\_\+component\+\_\+t\+::self\+\_\+frags\+\_\+send.

\hypertarget{btl__self_8h_a6e6e3449c9ecd37ba2cb7b611591bdb6}{\index{btl\+\_\+self.\+h@{btl\+\_\+self.\+h}!mca\+\_\+btl\+\_\+self\+\_\+del\+\_\+procs@{mca\+\_\+btl\+\_\+self\+\_\+del\+\_\+procs}}
\index{mca\+\_\+btl\+\_\+self\+\_\+del\+\_\+procs@{mca\+\_\+btl\+\_\+self\+\_\+del\+\_\+procs}!btl\+\_\+self.\+h@{btl\+\_\+self.\+h}}
\subsubsection[{mca\+\_\+btl\+\_\+self\+\_\+del\+\_\+procs}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+btl\+\_\+self\+\_\+del\+\_\+procs (
\begin{DoxyParamCaption}
\item[{struct {\bf mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$}]{btl, }
\item[{size\+\_\+t}]{nprocs, }
\item[{struct {\bf ompi\+\_\+proc\+\_\+t} $\ast$$\ast$}]{procs, }
\item[{struct {\bf mca\+\_\+btl\+\_\+base\+\_\+endpoint\+\_\+t} $\ast$$\ast$}]{peers}
\end{DoxyParamCaption}
)}}\label{btl__self_8h_a6e6e3449c9ecd37ba2cb7b611591bdb6}


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


\begin{DoxyParams}{Parameters}
{\em btl} & (I\+N) B\+T\+L instance \\
\hline
{\em proc} & (I\+N) Peer process \\
\hline
{\em peer} & (I\+N) Peer addressing information. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{classStatus}{Status} indicating if cleanup was successful 
\end{DoxyReturn}
\hypertarget{btl__self_8h_a938866d822d90d31c8d445f366aa76eb}{\index{btl\+\_\+self.\+h@{btl\+\_\+self.\+h}!mca\+\_\+btl\+\_\+self\+\_\+finalize@{mca\+\_\+btl\+\_\+self\+\_\+finalize}}
\index{mca\+\_\+btl\+\_\+self\+\_\+finalize@{mca\+\_\+btl\+\_\+self\+\_\+finalize}!btl\+\_\+self.\+h@{btl\+\_\+self.\+h}}
\subsubsection[{mca\+\_\+btl\+\_\+self\+\_\+finalize}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+btl\+\_\+self\+\_\+finalize (
\begin{DoxyParamCaption}
\item[{struct {\bf mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$}]{btl}
\end{DoxyParamCaption}
)}}\label{btl__self_8h_a938866d822d90d31c8d445f366aa76eb}


Cleanup any resources held by the B\+T\+L. 


\begin{DoxyParams}{Parameters}
{\em btl} & B\+T\+L instance. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S or error status on failure.
\end{DoxyReturn}
Cleanup any resources held by the B\+T\+L.


\begin{DoxyParams}{Parameters}
{\em btl} & (I\+N) B\+T\+L module.\\
\hline
\end{DoxyParams}
Prior to unloading a B\+T\+L module, the M\+C\+A framework will call the B\+T\+L finalize method of the module. Any resources held by the B\+T\+L should be released and if required the memory corresponding to the B\+T\+L module freed. \hypertarget{btl__self_8h_ab69f604c99d7b3a5b700bce842c89ce9}{\index{btl\+\_\+self.\+h@{btl\+\_\+self.\+h}!mca\+\_\+btl\+\_\+self\+\_\+free@{mca\+\_\+btl\+\_\+self\+\_\+free}}
\index{mca\+\_\+btl\+\_\+self\+\_\+free@{mca\+\_\+btl\+\_\+self\+\_\+free}!btl\+\_\+self.\+h@{btl\+\_\+self.\+h}}
\subsubsection[{mca\+\_\+btl\+\_\+self\+\_\+free}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+btl\+\_\+self\+\_\+free (
\begin{DoxyParamCaption}
\item[{struct {\bf mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$}]{btl, }
\item[{{\bf mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t} $\ast$}]{des}
\end{DoxyParamCaption}
)}}\label{btl__self_8h_ab69f604c99d7b3a5b700bce842c89ce9}


Return a segment allocated by this B\+T\+L. 


\begin{DoxyParams}{Parameters}
{\em btl} & (I\+N) B\+T\+L module \\
\hline
{\em segment} & (I\+N) Allocated segment. \\
\hline
\end{DoxyParams}


References mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t\+::btl\+\_\+eager\+\_\+limit, mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t\+::btl\+\_\+max\+\_\+send\+\_\+size, mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+dst, mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+dst\+\_\+cnt, mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+src, and mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+src\+\_\+cnt.



Referenced by mca\+\_\+btl\+\_\+self\+\_\+rdma(), and mca\+\_\+btl\+\_\+self\+\_\+send().

\hypertarget{btl__self_8h_a0c3dcd779edf4bc5df1ffcb626df76ae}{\index{btl\+\_\+self.\+h@{btl\+\_\+self.\+h}!mca\+\_\+btl\+\_\+self\+\_\+ft\+\_\+event@{mca\+\_\+btl\+\_\+self\+\_\+ft\+\_\+event}}
\index{mca\+\_\+btl\+\_\+self\+\_\+ft\+\_\+event@{mca\+\_\+btl\+\_\+self\+\_\+ft\+\_\+event}!btl\+\_\+self.\+h@{btl\+\_\+self.\+h}}
\subsubsection[{mca\+\_\+btl\+\_\+self\+\_\+ft\+\_\+event}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+btl\+\_\+self\+\_\+ft\+\_\+event (
\begin{DoxyParamCaption}
\item[{int}]{state}
\end{DoxyParamCaption}
)}}\label{btl__self_8h_a0c3dcd779edf4bc5df1ffcb626df76ae}


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


\begin{DoxyParams}{Parameters}
{\em state} & Checkpoint Stae \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S or failure status 
\end{DoxyReturn}
\hypertarget{btl__self_8h_acc0472ed36de0e4d73d7e3401c845533}{\index{btl\+\_\+self.\+h@{btl\+\_\+self.\+h}!mca\+\_\+btl\+\_\+self\+\_\+prepare\+\_\+dst@{mca\+\_\+btl\+\_\+self\+\_\+prepare\+\_\+dst}}
\index{mca\+\_\+btl\+\_\+self\+\_\+prepare\+\_\+dst@{mca\+\_\+btl\+\_\+self\+\_\+prepare\+\_\+dst}!btl\+\_\+self.\+h@{btl\+\_\+self.\+h}}
\subsubsection[{mca\+\_\+btl\+\_\+self\+\_\+prepare\+\_\+dst}]{\setlength{\rightskip}{0pt plus 5cm}struct {\bf mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t}$\ast$ mca\+\_\+btl\+\_\+self\+\_\+prepare\+\_\+dst (
\begin{DoxyParamCaption}
\item[{struct {\bf mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$}]{btl, }
\item[{struct {\bf mca\+\_\+btl\+\_\+base\+\_\+endpoint\+\_\+t} $\ast$}]{endpoint, }
\item[{{\bf mca\+\_\+mpool\+\_\+base\+\_\+registration\+\_\+t} $\ast$}]{registration, }
\item[{struct {\bf opal\+\_\+convertor\+\_\+t} $\ast$}]{convertor, }
\item[{uint8\+\_\+t}]{order, }
\item[{size\+\_\+t}]{reserve, }
\item[{size\+\_\+t $\ast$}]{size, }
\item[{uint32\+\_\+t}]{flags}
\end{DoxyParamCaption}
)}}\label{btl__self_8h_acc0472ed36de0e4d73d7e3401c845533}


Prepare data for R\+D\+M\+A. 


\begin{DoxyParams}{Parameters}
{\em btl} & (I\+N) B\+T\+L module \\
\hline
{\em peer} & (I\+N) B\+T\+L peer addressing\\
\hline
\end{DoxyParams}
Prepare data for R\+D\+M\+A. 

References mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+dst, mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+dst\+\_\+cnt, mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+flags, mca\+\_\+btl\+\_\+base\+\_\+segment\+\_\+t\+::seg\+\_\+addr, mca\+\_\+btl\+\_\+base\+\_\+segment\+\_\+t\+::seg\+\_\+key, and mca\+\_\+btl\+\_\+base\+\_\+segment\+\_\+t\+::seg\+\_\+len.

\hypertarget{btl__self_8h_aa01ab26dd137fa4e3acc082b371c83c4}{\index{btl\+\_\+self.\+h@{btl\+\_\+self.\+h}!mca\+\_\+btl\+\_\+self\+\_\+prepare\+\_\+src@{mca\+\_\+btl\+\_\+self\+\_\+prepare\+\_\+src}}
\index{mca\+\_\+btl\+\_\+self\+\_\+prepare\+\_\+src@{mca\+\_\+btl\+\_\+self\+\_\+prepare\+\_\+src}!btl\+\_\+self.\+h@{btl\+\_\+self.\+h}}
\subsubsection[{mca\+\_\+btl\+\_\+self\+\_\+prepare\+\_\+src}]{\setlength{\rightskip}{0pt plus 5cm}struct {\bf mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t}$\ast$ mca\+\_\+btl\+\_\+self\+\_\+prepare\+\_\+src (
\begin{DoxyParamCaption}
\item[{struct {\bf mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$}]{btl, }
\item[{struct {\bf mca\+\_\+btl\+\_\+base\+\_\+endpoint\+\_\+t} $\ast$}]{endpoint, }
\item[{{\bf mca\+\_\+mpool\+\_\+base\+\_\+registration\+\_\+t} $\ast$}]{registration, }
\item[{struct {\bf opal\+\_\+convertor\+\_\+t} $\ast$}]{convertor, }
\item[{uint8\+\_\+t}]{order, }
\item[{size\+\_\+t}]{reserve, }
\item[{size\+\_\+t $\ast$}]{size, }
\item[{uint32\+\_\+t}]{flags}
\end{DoxyParamCaption}
)}}\label{btl__self_8h_aa01ab26dd137fa4e3acc082b371c83c4}


Pack data. 


\begin{DoxyParams}{Parameters}
{\em btl} & (I\+N) B\+T\+L module \\
\hline
{\em peer} & (I\+N) B\+T\+L peer addressing\\
\hline
\end{DoxyParams}
Pack data.


\begin{DoxyParams}{Parameters}
{\em btl} & (I\+N) B\+T\+L module \\
\hline
\end{DoxyParams}


References mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t\+::btl\+\_\+max\+\_\+send\+\_\+size, mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+flags, mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+src, mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+src\+\_\+cnt, mca\+\_\+btl\+\_\+base\+\_\+segment\+\_\+t\+::seg\+\_\+addr, mca\+\_\+btl\+\_\+base\+\_\+segment\+\_\+t\+::seg\+\_\+key, and mca\+\_\+btl\+\_\+base\+\_\+segment\+\_\+t\+::seg\+\_\+len.

\hypertarget{btl__self_8h_ae0861525f7fc108179d13a6aca3e944c}{\index{btl\+\_\+self.\+h@{btl\+\_\+self.\+h}!mca\+\_\+btl\+\_\+self\+\_\+rdma@{mca\+\_\+btl\+\_\+self\+\_\+rdma}}
\index{mca\+\_\+btl\+\_\+self\+\_\+rdma@{mca\+\_\+btl\+\_\+self\+\_\+rdma}!btl\+\_\+self.\+h@{btl\+\_\+self.\+h}}
\subsubsection[{mca\+\_\+btl\+\_\+self\+\_\+rdma}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+btl\+\_\+self\+\_\+rdma (
\begin{DoxyParamCaption}
\item[{struct {\bf mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$}]{btl, }
\item[{struct {\bf mca\+\_\+btl\+\_\+base\+\_\+endpoint\+\_\+t} $\ast$}]{endpoint, }
\item[{struct {\bf mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t} $\ast$}]{des}
\end{DoxyParamCaption}
)}}\label{btl__self_8h_ae0861525f7fc108179d13a6aca3e944c}


Initiate a put to the peer. 


\begin{DoxyParams}{Parameters}
{\em btl} & (I\+N) B\+T\+L module \\
\hline
{\em peer} & (I\+N) B\+T\+L peer addressing \\
\hline
\end{DoxyParams}


References mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+cbfunc, mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+dst, mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+dst\+\_\+cnt, mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+flags, mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+src, mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+src\+\_\+cnt, mca\+\_\+btl\+\_\+self\+\_\+free(), mca\+\_\+btl\+\_\+base\+\_\+segment\+\_\+t\+::seg\+\_\+addr, and mca\+\_\+btl\+\_\+base\+\_\+segment\+\_\+t\+::seg\+\_\+len.

\hypertarget{btl__self_8h_a1a4ddbdbe0580e3c3c142a54db0baf25}{\index{btl\+\_\+self.\+h@{btl\+\_\+self.\+h}!mca\+\_\+btl\+\_\+self\+\_\+send@{mca\+\_\+btl\+\_\+self\+\_\+send}}
\index{mca\+\_\+btl\+\_\+self\+\_\+send@{mca\+\_\+btl\+\_\+self\+\_\+send}!btl\+\_\+self.\+h@{btl\+\_\+self.\+h}}
\subsubsection[{mca\+\_\+btl\+\_\+self\+\_\+send}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+btl\+\_\+self\+\_\+send (
\begin{DoxyParamCaption}
\item[{struct {\bf mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$}]{btl, }
\item[{struct {\bf mca\+\_\+btl\+\_\+base\+\_\+endpoint\+\_\+t} $\ast$}]{endpoint, }
\item[{struct {\bf mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t} $\ast$}]{des, }
\item[{mca\+\_\+btl\+\_\+base\+\_\+tag\+\_\+t}]{tag}
\end{DoxyParamCaption}
)}}\label{btl__self_8h_a1a4ddbdbe0580e3c3c142a54db0baf25}


Initiate a send to the peer. 


\begin{DoxyParams}{Parameters}
{\em btl} & (I\+N) B\+T\+L module \\
\hline
{\em peer} & (I\+N) B\+T\+L peer addressing \\
\hline
\end{DoxyParams}
We have to set the dst before the call to the function and reset them after.

References mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+cbfunc, mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+dst, mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+dst\+\_\+cnt, mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+flags, mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+src, mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+src\+\_\+cnt, and mca\+\_\+btl\+\_\+self\+\_\+free().

