\hypertarget{btl__smcuda_8h}{\section{ompi/mca/btl/smcuda/btl\+\_\+smcuda.h File Reference}
\label{btl__smcuda_8h}\index{ompi/mca/btl/smcuda/btl\+\_\+smcuda.\+h@{ompi/mca/btl/smcuda/btl\+\_\+smcuda.\+h}}
}
{\ttfamily \#include \char`\"{}ompi\+\_\+config.\+h\char`\"{}}\\*
{\ttfamily \#include $<$stddef.\+h$>$}\\*
{\ttfamily \#include $<$stdlib.\+h$>$}\\*
{\ttfamily \#include $<$string.\+h$>$}\\*
{\ttfamily \#include \char`\"{}opal/util/bit\+\_\+ops.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/class/opal\+\_\+free\+\_\+list.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/mca/btl/btl.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/mca/common/sm/common\+\_\+sm.\+h\char`\"{}}\\*
\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structsm__fifo__t}{sm\+\_\+fifo\+\_\+t}
\item 
struct \hyperlink{structmca__btl__smcuda__mem__node__t}{mca\+\_\+btl\+\_\+smcuda\+\_\+mem\+\_\+node\+\_\+t}
\item 
struct \hyperlink{structmca__btl__smcuda__component__t}{mca\+\_\+btl\+\_\+smcuda\+\_\+component\+\_\+t}
\begin{DoxyCompactList}\small\item\em Shared Memory (S\+M) B\+T\+L module. \end{DoxyCompactList}\item 
struct \hyperlink{structmca__btl__smcuda__t}{mca\+\_\+btl\+\_\+smcuda\+\_\+t}
\begin{DoxyCompactList}\small\item\em S\+M B\+T\+L Interface. \end{DoxyCompactList}\item 
struct \hyperlink{structbtl__smcuda__pending__send__item__t}{btl\+\_\+smcuda\+\_\+pending\+\_\+send\+\_\+item\+\_\+t}
\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\hypertarget{btl__smcuda_8h_a0e7b6cdecbcf77705bb0894201ce4bb3}{\#define {\bfseries S\+M\+\_\+\+F\+I\+F\+O\+\_\+\+F\+R\+E\+E}~(void $\ast$) (-\/2)}\label{btl__smcuda_8h_a0e7b6cdecbcf77705bb0894201ce4bb3}

\item 
\hypertarget{btl__smcuda_8h_ab18087ab9db45d7dc350660d53348ebf}{\#define {\bfseries S\+M\+\_\+\+C\+A\+C\+H\+E\+\_\+\+L\+I\+N\+E\+\_\+\+P\+A\+D}~128}\label{btl__smcuda_8h_ab18087ab9db45d7dc350660d53348ebf}

\item 
\hypertarget{btl__smcuda_8h_a2eec867f10bcac2ae49b29953fb94e54}{\#define {\bfseries V\+I\+R\+T\+U\+A\+L2\+R\+E\+L\+A\+T\+I\+V\+E}(V\+A\+D\+D\+R)~((long)(V\+A\+D\+D\+R)  -\/ (long)mca\+\_\+btl\+\_\+smcuda\+\_\+component.\+shm\+\_\+bases\mbox{[}mca\+\_\+btl\+\_\+smcuda\+\_\+component.\+my\+\_\+smp\+\_\+rank\mbox{]})}\label{btl__smcuda_8h_a2eec867f10bcac2ae49b29953fb94e54}

\item 
\hypertarget{btl__smcuda_8h_a2f3119deb810df26ec96a370a3e361ed}{\#define {\bfseries R\+E\+L\+A\+T\+I\+V\+E2\+V\+I\+R\+T\+U\+A\+L}(O\+F\+F\+S\+E\+T)~((long)(O\+F\+F\+S\+E\+T) + (long)mca\+\_\+btl\+\_\+smcuda\+\_\+component.\+shm\+\_\+bases\mbox{[}mca\+\_\+btl\+\_\+smcuda\+\_\+component.\+my\+\_\+smp\+\_\+rank\mbox{]})}\label{btl__smcuda_8h_a2f3119deb810df26ec96a370a3e361ed}

\item 
\hypertarget{btl__smcuda_8h_aa7b9c167aca7a644bb3b8c29f4011b56}{\#define {\bfseries M\+C\+A\+\_\+\+B\+T\+L\+\_\+\+S\+M\+C\+U\+D\+A\+\_\+\+S\+I\+G\+N\+A\+L\+\_\+\+P\+E\+E\+R}(peer)}\label{btl__smcuda_8h_aa7b9c167aca7a644bb3b8c29f4011b56}

\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\hypertarget{btl__smcuda_8h_acc98e6ef926f473e545ec008d05ab5a0}{typedef struct \hyperlink{structsm__fifo__t}{sm\+\_\+fifo\+\_\+t} {\bfseries sm\+\_\+fifo\+\_\+t}}\label{btl__smcuda_8h_acc98e6ef926f473e545ec008d05ab5a0}

\item 
\hypertarget{btl__smcuda_8h_a314ae2afab452f734eca48b522898844}{typedef struct \\*
\hyperlink{structmca__btl__smcuda__mem__node__t}{mca\+\_\+btl\+\_\+smcuda\+\_\+mem\+\_\+node\+\_\+t} {\bfseries mca\+\_\+btl\+\_\+smcuda\+\_\+mem\+\_\+node\+\_\+t}}\label{btl__smcuda_8h_a314ae2afab452f734eca48b522898844}

\item 
\hypertarget{btl__smcuda_8h_a437426b48f96225262db31156ec56615}{typedef struct \\*
\hyperlink{structmca__btl__smcuda__component__t}{mca\+\_\+btl\+\_\+smcuda\+\_\+component\+\_\+t} {\bfseries mca\+\_\+btl\+\_\+smcuda\+\_\+component\+\_\+t}}\label{btl__smcuda_8h_a437426b48f96225262db31156ec56615}

\item 
\hypertarget{btl__smcuda_8h_adfa8f27a76e5f77ef8ad78c7527451cc}{typedef struct \hyperlink{structmca__btl__smcuda__t}{mca\+\_\+btl\+\_\+smcuda\+\_\+t} {\bfseries mca\+\_\+btl\+\_\+smcuda\+\_\+t}}\label{btl__smcuda_8h_adfa8f27a76e5f77ef8ad78c7527451cc}

\item 
\hypertarget{btl__smcuda_8h_aa448ad5b122db6ce746c6665ffe0aa46}{typedef struct \\*
\hyperlink{structbtl__smcuda__pending__send__item__t}{btl\+\_\+smcuda\+\_\+pending\+\_\+send\+\_\+item\+\_\+t} {\bfseries btl\+\_\+smcuda\+\_\+pending\+\_\+send\+\_\+item\+\_\+t}}\label{btl__smcuda_8h_aa448ad5b122db6ce746c6665ffe0aa46}

\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{btl__smcuda_8h_a8ecb831f2835108cc197e7d1a3ce1d8a}{static int {\bfseries sm\+\_\+fifo\+\_\+init} (int fifo\+\_\+size, \hyperlink{structmca__mpool__base__module__t}{mca\+\_\+mpool\+\_\+base\+\_\+module\+\_\+t} $\ast$mpool, \hyperlink{structsm__fifo__t}{sm\+\_\+fifo\+\_\+t} $\ast$fifo, int lazy\+\_\+free)}\label{btl__smcuda_8h_a8ecb831f2835108cc197e7d1a3ce1d8a}

\item 
\hypertarget{btl__smcuda_8h_a6cbe87a4e58a4cbfb4b992cd7d1a9792}{static int {\bfseries sm\+\_\+fifo\+\_\+write} (void $\ast$value, \hyperlink{structsm__fifo__t}{sm\+\_\+fifo\+\_\+t} $\ast$fifo)}\label{btl__smcuda_8h_a6cbe87a4e58a4cbfb4b992cd7d1a9792}

\item 
\hypertarget{btl__smcuda_8h_ad1bf4cddfe7f441f365951e646a02230}{static void $\ast$ {\bfseries sm\+\_\+fifo\+\_\+read} (\hyperlink{structsm__fifo__t}{sm\+\_\+fifo\+\_\+t} $\ast$fifo)}\label{btl__smcuda_8h_ad1bf4cddfe7f441f365951e646a02230}

\item 
\hypertarget{btl__smcuda_8h_a5c9aa667b5b7b1da579e25f1f2997998}{int \hyperlink{btl__smcuda_8h_a5c9aa667b5b7b1da579e25f1f2997998}{mca\+\_\+btl\+\_\+smcuda\+\_\+component\+\_\+progress} (void)}\label{btl__smcuda_8h_a5c9aa667b5b7b1da579e25f1f2997998}

\begin{DoxyCompactList}\small\item\em shared memory component progress. \end{DoxyCompactList}\item 
int \hyperlink{btl__smcuda_8h_a3f1ba924dcd7baa45e4322f3f2e846f9}{mca\+\_\+btl\+\_\+smcuda\+\_\+register\+\_\+error\+\_\+cb} (struct \hyperlink{structmca__btl__base__module__t}{mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$btl, \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 on error. \end{DoxyCompactList}\item 
int \hyperlink{btl__smcuda_8h_aa249776e1c1f5a87adc0bbd9372d4fd2}{mca\+\_\+btl\+\_\+smcuda\+\_\+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__smcuda_8h_a4d618641a2abd03d5c4c9ee66d8fc97a}{mca\+\_\+btl\+\_\+smcuda\+\_\+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__smcuda_8h_a27b522d915b6b88cbc605f5f73228c80}{mca\+\_\+btl\+\_\+smcuda\+\_\+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__smcuda_8h_afd78f4df5a9cff3fd197feb24692359b}{mca\+\_\+btl\+\_\+smcuda\+\_\+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__smcuda_8h_a5e096e89f3386a87238cdb184152ad14}{mca\+\_\+btl\+\_\+smcuda\+\_\+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__smcuda_8h_a4f8f41c3255d5c8f2ba8b556bcd36aff}{mca\+\_\+btl\+\_\+smcuda\+\_\+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, \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 
int \hyperlink{btl__smcuda_8h_a9506d6c1c1fbbbe5435b1e1527613e45}{mca\+\_\+btl\+\_\+smcuda\+\_\+sendi} (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{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)
\begin{DoxyCompactList}\small\item\em Initiate an inlined send to the peer or return a descriptor. \end{DoxyCompactList}\item 
int \hyperlink{btl__smcuda_8h_a1f8a175b5617bc44a679188ddd6477c2}{mca\+\_\+btl\+\_\+smcuda\+\_\+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__smcuda_8h_aa4686a5e6493c3406823d5f72fff4296}{mca\+\_\+btl\+\_\+smcuda\+\_\+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__smcuda_8h_a1439a719bb318595932c7aaa5cc738cc}{O\+M\+P\+I\+\_\+\+M\+O\+D\+U\+L\+E\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C \\*
\hyperlink{structmca__btl__smcuda__component__t}{mca\+\_\+btl\+\_\+smcuda\+\_\+component\+\_\+t} {\bfseries mca\+\_\+btl\+\_\+smcuda\+\_\+component}}\label{btl__smcuda_8h_a1439a719bb318595932c7aaa5cc738cc}

\item 
\hypertarget{btl__smcuda_8h_a8d96c16a6fd555755a4d76ea3cc9bea8}{O\+M\+P\+I\+\_\+\+M\+O\+D\+U\+L\+E\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C \\*
\hyperlink{structmca__btl__smcuda__t}{mca\+\_\+btl\+\_\+smcuda\+\_\+t} {\bfseries mca\+\_\+btl\+\_\+smcuda}}\label{btl__smcuda_8h_a8d96c16a6fd555755a4d76ea3cc9bea8}

\end{DoxyCompactItemize}


\subsection{Function Documentation}
\hypertarget{btl__smcuda_8h_a4d618641a2abd03d5c4c9ee66d8fc97a}{\index{btl\+\_\+smcuda.\+h@{btl\+\_\+smcuda.\+h}!mca\+\_\+btl\+\_\+smcuda\+\_\+add\+\_\+procs@{mca\+\_\+btl\+\_\+smcuda\+\_\+add\+\_\+procs}}
\index{mca\+\_\+btl\+\_\+smcuda\+\_\+add\+\_\+procs@{mca\+\_\+btl\+\_\+smcuda\+\_\+add\+\_\+procs}!btl\+\_\+smcuda.\+h@{btl\+\_\+smcuda.\+h}}
\subsubsection[{mca\+\_\+btl\+\_\+smcuda\+\_\+add\+\_\+procs}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+btl\+\_\+smcuda\+\_\+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__smcuda_8h_a4d618641a2abd03d5c4c9ee66d8fc97a}


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 mca\+\_\+btl\+\_\+smcuda\+\_\+t\+::btl\+\_\+inited, mca\+\_\+btl\+\_\+smcuda\+\_\+component\+\_\+t\+::fifo, mca\+\_\+btl\+\_\+smcuda\+\_\+component\+\_\+t\+::fifo\+\_\+lazy\+\_\+free, mca\+\_\+btl\+\_\+smcuda\+\_\+component\+\_\+t\+::fifo\+\_\+size, orte\+\_\+process\+\_\+name\+\_\+t\+::jobid, mca\+\_\+btl\+\_\+smcuda\+\_\+component\+\_\+t\+::mem\+\_\+nodes, mca\+\_\+btl\+\_\+base\+\_\+endpoint\+\_\+t\+::my\+\_\+smp\+\_\+rank, mca\+\_\+btl\+\_\+smcuda\+\_\+component\+\_\+t\+::my\+\_\+smp\+\_\+rank, mca\+\_\+btl\+\_\+smcuda\+\_\+component\+\_\+t\+::num\+\_\+smp\+\_\+procs, ompi\+\_\+proc\+\_\+local(), opal\+\_\+atomic\+\_\+rmb(), opal\+\_\+atomic\+\_\+wmb(), opal\+\_\+bitmap\+\_\+set\+\_\+bit(), opal\+\_\+progress(), mca\+\_\+btl\+\_\+base\+\_\+endpoint\+\_\+t\+::peer\+\_\+smp\+\_\+rank, ompi\+\_\+proc\+\_\+t\+::proc\+\_\+name, mca\+\_\+btl\+\_\+smcuda\+\_\+component\+\_\+t\+::shm\+\_\+bases, mca\+\_\+btl\+\_\+smcuda\+\_\+component\+\_\+t\+::shm\+\_\+fifo, mca\+\_\+btl\+\_\+smcuda\+\_\+component\+\_\+t\+::shm\+\_\+mem\+\_\+nodes, mca\+\_\+btl\+\_\+smcuda\+\_\+component\+\_\+t\+::sm\+\_\+frags\+\_\+eager, mca\+\_\+btl\+\_\+smcuda\+\_\+component\+\_\+t\+::sm\+\_\+max\+\_\+procs, mca\+\_\+btl\+\_\+smcuda\+\_\+component\+\_\+t\+::sm\+\_\+mpool, and mca\+\_\+btl\+\_\+smcuda\+\_\+component\+\_\+t\+::sm\+\_\+seg.

\hypertarget{btl__smcuda_8h_afd78f4df5a9cff3fd197feb24692359b}{\index{btl\+\_\+smcuda.\+h@{btl\+\_\+smcuda.\+h}!mca\+\_\+btl\+\_\+smcuda\+\_\+alloc@{mca\+\_\+btl\+\_\+smcuda\+\_\+alloc}}
\index{mca\+\_\+btl\+\_\+smcuda\+\_\+alloc@{mca\+\_\+btl\+\_\+smcuda\+\_\+alloc}!btl\+\_\+smcuda.\+h@{btl\+\_\+smcuda.\+h}}
\subsubsection[{mca\+\_\+btl\+\_\+smcuda\+\_\+alloc}]{\setlength{\rightskip}{0pt plus 5cm}{\bf mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t}$\ast$ mca\+\_\+btl\+\_\+smcuda\+\_\+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__smcuda_8h_afd78f4df5a9cff3fd197feb24692359b}


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\+\_\+descriptor\+\_\+t\+::des\+\_\+flags, mca\+\_\+btl\+\_\+smcuda\+\_\+component\+\_\+t\+::eager\+\_\+limit, mca\+\_\+btl\+\_\+smcuda\+\_\+component\+\_\+t\+::max\+\_\+frag\+\_\+size, and mca\+\_\+btl\+\_\+base\+\_\+segment\+\_\+t\+::seg\+\_\+len.



Referenced by mca\+\_\+btl\+\_\+smcuda\+\_\+sendi().

\hypertarget{btl__smcuda_8h_a27b522d915b6b88cbc605f5f73228c80}{\index{btl\+\_\+smcuda.\+h@{btl\+\_\+smcuda.\+h}!mca\+\_\+btl\+\_\+smcuda\+\_\+del\+\_\+procs@{mca\+\_\+btl\+\_\+smcuda\+\_\+del\+\_\+procs}}
\index{mca\+\_\+btl\+\_\+smcuda\+\_\+del\+\_\+procs@{mca\+\_\+btl\+\_\+smcuda\+\_\+del\+\_\+procs}!btl\+\_\+smcuda.\+h@{btl\+\_\+smcuda.\+h}}
\subsubsection[{mca\+\_\+btl\+\_\+smcuda\+\_\+del\+\_\+procs}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+btl\+\_\+smcuda\+\_\+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__smcuda_8h_a27b522d915b6b88cbc605f5f73228c80}


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__smcuda_8h_aa249776e1c1f5a87adc0bbd9372d4fd2}{\index{btl\+\_\+smcuda.\+h@{btl\+\_\+smcuda.\+h}!mca\+\_\+btl\+\_\+smcuda\+\_\+finalize@{mca\+\_\+btl\+\_\+smcuda\+\_\+finalize}}
\index{mca\+\_\+btl\+\_\+smcuda\+\_\+finalize@{mca\+\_\+btl\+\_\+smcuda\+\_\+finalize}!btl\+\_\+smcuda.\+h@{btl\+\_\+smcuda.\+h}}
\subsubsection[{mca\+\_\+btl\+\_\+smcuda\+\_\+finalize}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+btl\+\_\+smcuda\+\_\+finalize (
\begin{DoxyParamCaption}
\item[{struct {\bf mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$}]{btl}
\end{DoxyParamCaption}
)}}\label{btl__smcuda_8h_aa249776e1c1f5a87adc0bbd9372d4fd2}


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__smcuda_8h_a5e096e89f3386a87238cdb184152ad14}{\index{btl\+\_\+smcuda.\+h@{btl\+\_\+smcuda.\+h}!mca\+\_\+btl\+\_\+smcuda\+\_\+free@{mca\+\_\+btl\+\_\+smcuda\+\_\+free}}
\index{mca\+\_\+btl\+\_\+smcuda\+\_\+free@{mca\+\_\+btl\+\_\+smcuda\+\_\+free}!btl\+\_\+smcuda.\+h@{btl\+\_\+smcuda.\+h}}
\subsubsection[{mca\+\_\+btl\+\_\+smcuda\+\_\+free}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+btl\+\_\+smcuda\+\_\+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__smcuda_8h_a5e096e89f3386a87238cdb184152ad14}


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}
\hypertarget{btl__smcuda_8h_aa4686a5e6493c3406823d5f72fff4296}{\index{btl\+\_\+smcuda.\+h@{btl\+\_\+smcuda.\+h}!mca\+\_\+btl\+\_\+smcuda\+\_\+ft\+\_\+event@{mca\+\_\+btl\+\_\+smcuda\+\_\+ft\+\_\+event}}
\index{mca\+\_\+btl\+\_\+smcuda\+\_\+ft\+\_\+event@{mca\+\_\+btl\+\_\+smcuda\+\_\+ft\+\_\+event}!btl\+\_\+smcuda.\+h@{btl\+\_\+smcuda.\+h}}
\subsubsection[{mca\+\_\+btl\+\_\+smcuda\+\_\+ft\+\_\+event}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+btl\+\_\+smcuda\+\_\+ft\+\_\+event (
\begin{DoxyParamCaption}
\item[{int}]{state}
\end{DoxyParamCaption}
)}}\label{btl__smcuda_8h_aa4686a5e6493c3406823d5f72fff4296}


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__smcuda_8h_a4f8f41c3255d5c8f2ba8b556bcd36aff}{\index{btl\+\_\+smcuda.\+h@{btl\+\_\+smcuda.\+h}!mca\+\_\+btl\+\_\+smcuda\+\_\+prepare\+\_\+src@{mca\+\_\+btl\+\_\+smcuda\+\_\+prepare\+\_\+src}}
\index{mca\+\_\+btl\+\_\+smcuda\+\_\+prepare\+\_\+src@{mca\+\_\+btl\+\_\+smcuda\+\_\+prepare\+\_\+src}!btl\+\_\+smcuda.\+h@{btl\+\_\+smcuda.\+h}}
\subsubsection[{mca\+\_\+btl\+\_\+smcuda\+\_\+prepare\+\_\+src}]{\setlength{\rightskip}{0pt plus 5cm}struct {\bf mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t}$\ast$ mca\+\_\+btl\+\_\+smcuda\+\_\+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__smcuda_8h_a4f8f41c3255d5c8f2ba8b556bcd36aff}


Pack data. 


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


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\+\_\+descriptor\+\_\+t\+::des\+\_\+src, mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+src\+\_\+cnt, mca\+\_\+btl\+\_\+smcuda\+\_\+component\+\_\+t\+::eager\+\_\+limit, opal\+\_\+convertor\+\_\+t\+::flags, mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::order, mca\+\_\+btl\+\_\+base\+\_\+segment\+\_\+t\+::seg\+\_\+addr, mca\+\_\+btl\+\_\+base\+\_\+segment\+\_\+t\+::seg\+\_\+key, and mca\+\_\+btl\+\_\+base\+\_\+segment\+\_\+t\+::seg\+\_\+len.

\hypertarget{btl__smcuda_8h_a3f1ba924dcd7baa45e4322f3f2e846f9}{\index{btl\+\_\+smcuda.\+h@{btl\+\_\+smcuda.\+h}!mca\+\_\+btl\+\_\+smcuda\+\_\+register\+\_\+error\+\_\+cb@{mca\+\_\+btl\+\_\+smcuda\+\_\+register\+\_\+error\+\_\+cb}}
\index{mca\+\_\+btl\+\_\+smcuda\+\_\+register\+\_\+error\+\_\+cb@{mca\+\_\+btl\+\_\+smcuda\+\_\+register\+\_\+error\+\_\+cb}!btl\+\_\+smcuda.\+h@{btl\+\_\+smcuda.\+h}}
\subsubsection[{mca\+\_\+btl\+\_\+smcuda\+\_\+register\+\_\+error\+\_\+cb}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+btl\+\_\+smcuda\+\_\+register\+\_\+error\+\_\+cb (
\begin{DoxyParamCaption}
\item[{struct {\bf mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+t} $\ast$}]{btl, }
\item[{{\bf mca\+\_\+btl\+\_\+base\+\_\+module\+\_\+error\+\_\+cb\+\_\+fn\+\_\+t}}]{cbfunc}
\end{DoxyParamCaption}
)}}\label{btl__smcuda_8h_a3f1ba924dcd7baa45e4322f3f2e846f9}


Register a callback function that is called on error. 


\begin{DoxyParams}{Parameters}
{\em btl} & (I\+N) B\+T\+L module \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{classStatus}{Status} indicating if cleanup was successful 
\end{DoxyReturn}
\hypertarget{btl__smcuda_8h_a1f8a175b5617bc44a679188ddd6477c2}{\index{btl\+\_\+smcuda.\+h@{btl\+\_\+smcuda.\+h}!mca\+\_\+btl\+\_\+smcuda\+\_\+send@{mca\+\_\+btl\+\_\+smcuda\+\_\+send}}
\index{mca\+\_\+btl\+\_\+smcuda\+\_\+send@{mca\+\_\+btl\+\_\+smcuda\+\_\+send}!btl\+\_\+smcuda.\+h@{btl\+\_\+smcuda.\+h}}
\subsubsection[{mca\+\_\+btl\+\_\+smcuda\+\_\+send}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+btl\+\_\+smcuda\+\_\+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$}]{descriptor, }
\item[{mca\+\_\+btl\+\_\+base\+\_\+tag\+\_\+t}]{tag}
\end{DoxyParamCaption}
)}}\label{btl__smcuda_8h_a1f8a175b5617bc44a679188ddd6477c2}


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}


References mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+flags, mca\+\_\+btl\+\_\+smcuda\+\_\+component\+\_\+t\+::fifo\+\_\+size, mca\+\_\+btl\+\_\+smcuda\+\_\+component\+\_\+progress(), mca\+\_\+btl\+\_\+base\+\_\+endpoint\+\_\+t\+::my\+\_\+smp\+\_\+rank, mca\+\_\+btl\+\_\+smcuda\+\_\+component\+\_\+t\+::num\+\_\+outstanding\+\_\+frags, O\+P\+A\+L\+\_\+\+T\+H\+R\+E\+A\+D\+\_\+\+A\+D\+D32, mca\+\_\+btl\+\_\+base\+\_\+endpoint\+\_\+t\+::peer\+\_\+smp\+\_\+rank, and mca\+\_\+btl\+\_\+base\+\_\+segment\+\_\+t\+::seg\+\_\+len.

\hypertarget{btl__smcuda_8h_a9506d6c1c1fbbbe5435b1e1527613e45}{\index{btl\+\_\+smcuda.\+h@{btl\+\_\+smcuda.\+h}!mca\+\_\+btl\+\_\+smcuda\+\_\+sendi@{mca\+\_\+btl\+\_\+smcuda\+\_\+sendi}}
\index{mca\+\_\+btl\+\_\+smcuda\+\_\+sendi@{mca\+\_\+btl\+\_\+smcuda\+\_\+sendi}!btl\+\_\+smcuda.\+h@{btl\+\_\+smcuda.\+h}}
\subsubsection[{mca\+\_\+btl\+\_\+smcuda\+\_\+sendi}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+btl\+\_\+smcuda\+\_\+sendi (
\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 opal\+\_\+convertor\+\_\+t} $\ast$}]{convertor, }
\item[{void $\ast$}]{header, }
\item[{size\+\_\+t}]{header\+\_\+size, }
\item[{size\+\_\+t}]{payload\+\_\+size, }
\item[{uint8\+\_\+t}]{order, }
\item[{uint32\+\_\+t}]{flags, }
\item[{mca\+\_\+btl\+\_\+base\+\_\+tag\+\_\+t}]{tag, }
\item[{{\bf mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t} $\ast$$\ast$}]{descriptor}
\end{DoxyParamCaption}
)}}\label{btl__smcuda_8h_a9506d6c1c1fbbbe5435b1e1527613e45}


Initiate an inlined send to the peer or return a descriptor. 


\begin{DoxyParams}{Parameters}
{\em btl} & (I\+N) B\+T\+L module \\
\hline
{\em peer} & (I\+N) B\+T\+L peer addressing\\
\hline
\end{DoxyParams}
Initiate an inlined send to the peer or return a descriptor.

If failure then return a descriptor.


\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\+\_\+flags, mca\+\_\+btl\+\_\+smcuda\+\_\+component\+\_\+t\+::eager\+\_\+limit, mca\+\_\+btl\+\_\+smcuda\+\_\+component\+\_\+t\+::fifo\+\_\+size, mca\+\_\+btl\+\_\+smcuda\+\_\+alloc(), mca\+\_\+btl\+\_\+smcuda\+\_\+component\+\_\+progress(), mca\+\_\+btl\+\_\+base\+\_\+endpoint\+\_\+t\+::my\+\_\+smp\+\_\+rank, mca\+\_\+btl\+\_\+smcuda\+\_\+component\+\_\+t\+::num\+\_\+outstanding\+\_\+frags, O\+P\+A\+L\+\_\+\+T\+H\+R\+E\+A\+D\+\_\+\+A\+D\+D32, mca\+\_\+btl\+\_\+base\+\_\+endpoint\+\_\+t\+::peer\+\_\+smp\+\_\+rank, mca\+\_\+btl\+\_\+base\+\_\+segment\+\_\+t\+::seg\+\_\+addr, and mca\+\_\+btl\+\_\+base\+\_\+segment\+\_\+t\+::seg\+\_\+len.

