\hypertarget{pml__ob1_8h}{\section{ompi/mca/pml/ob1/pml\+\_\+ob1.h File Reference}
\label{pml__ob1_8h}\index{ompi/mca/pml/ob1/pml\+\_\+ob1.\+h@{ompi/mca/pml/ob1/pml\+\_\+ob1.\+h}}
}
{\ttfamily \#include \char`\"{}ompi\+\_\+config.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/class/ompi\+\_\+free\+\_\+list.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/request/request.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/mca/pml/pml.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/mca/pml/base/pml\+\_\+base\+\_\+request.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/mca/pml/base/pml\+\_\+base\+\_\+bsend.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/mca/pml/base/pml\+\_\+base\+\_\+sendreq.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/datatype/ompi\+\_\+datatype.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}pml\+\_\+ob1\+\_\+hdr.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/mca/bml/base/base.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/proc/proc.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/mca/allocator/base/base.\+h\char`\"{}}\\*
\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structmca__pml__ob1__t}{mca\+\_\+pml\+\_\+ob1\+\_\+t}
\begin{DoxyCompactList}\small\item\em O\+B1 P\+M\+L module. \end{DoxyCompactList}\item 
struct \hyperlink{structmca__pml__ob1__pckt__pending__t}{mca\+\_\+pml\+\_\+ob1\+\_\+pckt\+\_\+pending\+\_\+t}
\item 
struct \hyperlink{structmca__pml__ob1__com__btl__t}{mca\+\_\+pml\+\_\+ob1\+\_\+com\+\_\+btl\+\_\+t}
\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define {\bfseries M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+A\+L\+L\+O\+C}(pckt, rc)
\item 
\#define {\bfseries M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+R\+E\+T\+U\+R\+N}(pckt)
\item 
\#define {\bfseries M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+A\+D\+D\+\_\+\+F\+I\+N\+\_\+\+T\+O\+\_\+\+P\+E\+N\+D\+I\+N\+G}(P, D, B, O, S)
\item 
\#define {\bfseries M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+P\+R\+O\+G\+R\+E\+S\+S\+\_\+\+P\+E\+N\+D\+I\+N\+G}(bml\+\_\+btl)
\item 
\#define {\bfseries M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+S\+E\+G\+M\+E\+N\+T\+\_\+\+L\+E\+N\+G\+T\+H}(segments, count, hdrlen, length)
\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\hypertarget{pml__ob1_8h_a58795c7b0c3705deffcdabeb7d512e1d}{typedef struct \hyperlink{structmca__pml__ob1__t}{mca\+\_\+pml\+\_\+ob1\+\_\+t} {\bfseries mca\+\_\+pml\+\_\+ob1\+\_\+t}}\label{pml__ob1_8h_a58795c7b0c3705deffcdabeb7d512e1d}

\item 
\hypertarget{pml__ob1_8h_a9a0b91a5994f7f9eff4fa6d3b8f09aa4}{typedef struct \\*
\hyperlink{structmca__pml__ob1__pckt__pending__t}{mca\+\_\+pml\+\_\+ob1\+\_\+pckt\+\_\+pending\+\_\+t} {\bfseries mca\+\_\+pml\+\_\+ob1\+\_\+pckt\+\_\+pending\+\_\+t}}\label{pml__ob1_8h_a9a0b91a5994f7f9eff4fa6d3b8f09aa4}

\item 
\hypertarget{pml__ob1_8h_ac20938db87ee3743cc3f8046353ab5b7}{typedef struct \\*
\hyperlink{structmca__pml__ob1__com__btl__t}{mca\+\_\+pml\+\_\+ob1\+\_\+com\+\_\+btl\+\_\+t} {\bfseries mca\+\_\+pml\+\_\+ob1\+\_\+com\+\_\+btl\+\_\+t}}\label{pml__ob1_8h_ac20938db87ee3743cc3f8046353ab5b7}

\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{pml__ob1_8h_a5201e9a2b67f66d9992785b4c876db72}{int {\bfseries mca\+\_\+pml\+\_\+ob1\+\_\+add\+\_\+comm} (struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm)}\label{pml__ob1_8h_a5201e9a2b67f66d9992785b4c876db72}

\item 
\hypertarget{pml__ob1_8h_a89ca67b530065f5c1a5c93b390d0e384}{int {\bfseries mca\+\_\+pml\+\_\+ob1\+\_\+del\+\_\+comm} (struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm)}\label{pml__ob1_8h_a89ca67b530065f5c1a5c93b390d0e384}

\item 
\hypertarget{pml__ob1_8h_ade7f63cad4b62f02c34e2f4d3063e886}{int {\bfseries mca\+\_\+pml\+\_\+ob1\+\_\+add\+\_\+procs} (struct \hyperlink{structompi__proc__t}{ompi\+\_\+proc\+\_\+t} $\ast$$\ast$procs, size\+\_\+t nprocs)}\label{pml__ob1_8h_ade7f63cad4b62f02c34e2f4d3063e886}

\item 
\hypertarget{pml__ob1_8h_a14eba9dba8cc177ebc75ee81472766a6}{int {\bfseries mca\+\_\+pml\+\_\+ob1\+\_\+del\+\_\+procs} (struct \hyperlink{structompi__proc__t}{ompi\+\_\+proc\+\_\+t} $\ast$$\ast$procs, size\+\_\+t nprocs)}\label{pml__ob1_8h_a14eba9dba8cc177ebc75ee81472766a6}

\item 
int \hyperlink{pml__ob1_8h_a4ca901a09e8a1bf8fc500c013e30f75b}{mca\+\_\+pml\+\_\+ob1\+\_\+enable} (bool enable)
\item 
\hypertarget{pml__ob1_8h_a6ba067bc2b3766572fa26c8987660a7e}{int {\bfseries mca\+\_\+pml\+\_\+ob1\+\_\+progress} (void)}\label{pml__ob1_8h_a6ba067bc2b3766572fa26c8987660a7e}

\item 
\hypertarget{pml__ob1_8h_ac131d247a5ddfba66208cf97c726f9de}{int {\bfseries mca\+\_\+pml\+\_\+ob1\+\_\+iprobe} (int dst, int tag, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, int $\ast$matched, \hyperlink{structompi__status__public__t}{ompi\+\_\+status\+\_\+public\+\_\+t} $\ast$status)}\label{pml__ob1_8h_ac131d247a5ddfba66208cf97c726f9de}

\item 
\hypertarget{pml__ob1_8h_afdc530eaa814cfe2e1805732d512b793}{int {\bfseries mca\+\_\+pml\+\_\+ob1\+\_\+probe} (int dst, int tag, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, \hyperlink{structompi__status__public__t}{ompi\+\_\+status\+\_\+public\+\_\+t} $\ast$status)}\label{pml__ob1_8h_afdc530eaa814cfe2e1805732d512b793}

\item 
\hypertarget{pml__ob1_8h_ad1e54f5ae94bc585f413c9fc63fc25c4}{int {\bfseries mca\+\_\+pml\+\_\+ob1\+\_\+improbe} (int dst, int tag, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, int $\ast$matched, struct \hyperlink{structompi__message__t}{ompi\+\_\+message\+\_\+t} $\ast$$\ast$message, \hyperlink{structompi__status__public__t}{ompi\+\_\+status\+\_\+public\+\_\+t} $\ast$status)}\label{pml__ob1_8h_ad1e54f5ae94bc585f413c9fc63fc25c4}

\item 
\hypertarget{pml__ob1_8h_a9afe1c7c699242dab5789d96e8790df9}{int {\bfseries mca\+\_\+pml\+\_\+ob1\+\_\+mprobe} (int dst, int tag, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, struct \hyperlink{structompi__message__t}{ompi\+\_\+message\+\_\+t} $\ast$$\ast$message, \hyperlink{structompi__status__public__t}{ompi\+\_\+status\+\_\+public\+\_\+t} $\ast$status)}\label{pml__ob1_8h_a9afe1c7c699242dab5789d96e8790df9}

\item 
\hypertarget{pml__ob1_8h_a9f0c8fe96154d6cc682734f99029a298}{int {\bfseries mca\+\_\+pml\+\_\+ob1\+\_\+isend\+\_\+init} (void $\ast$buf, size\+\_\+t count, \hyperlink{structompi__datatype__t}{ompi\+\_\+datatype\+\_\+t} $\ast$datatype, int dst, int tag, mca\+\_\+pml\+\_\+base\+\_\+send\+\_\+mode\+\_\+t mode, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, struct \hyperlink{structompi__request__t}{ompi\+\_\+request\+\_\+t} $\ast$$\ast$\hyperlink{structrequest}{request})}\label{pml__ob1_8h_a9f0c8fe96154d6cc682734f99029a298}

\item 
\hypertarget{pml__ob1_8h_a3eec76ceb0e65dbab43fbc7c288382d4}{int {\bfseries mca\+\_\+pml\+\_\+ob1\+\_\+isend} (void $\ast$buf, size\+\_\+t count, \hyperlink{structompi__datatype__t}{ompi\+\_\+datatype\+\_\+t} $\ast$datatype, int dst, int tag, mca\+\_\+pml\+\_\+base\+\_\+send\+\_\+mode\+\_\+t mode, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, struct \hyperlink{structompi__request__t}{ompi\+\_\+request\+\_\+t} $\ast$$\ast$\hyperlink{structrequest}{request})}\label{pml__ob1_8h_a3eec76ceb0e65dbab43fbc7c288382d4}

\item 
\hypertarget{pml__ob1_8h_a31cba7b8485fc6e9f0771cb941959b4d}{int {\bfseries mca\+\_\+pml\+\_\+ob1\+\_\+send} (void $\ast$buf, size\+\_\+t count, \hyperlink{structompi__datatype__t}{ompi\+\_\+datatype\+\_\+t} $\ast$datatype, int dst, int tag, mca\+\_\+pml\+\_\+base\+\_\+send\+\_\+mode\+\_\+t mode, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm)}\label{pml__ob1_8h_a31cba7b8485fc6e9f0771cb941959b4d}

\item 
\hypertarget{pml__ob1_8h_aad22e71e6ffe1240fa2f27265ed53c0d}{int {\bfseries mca\+\_\+pml\+\_\+ob1\+\_\+irecv\+\_\+init} (void $\ast$buf, size\+\_\+t count, \hyperlink{structompi__datatype__t}{ompi\+\_\+datatype\+\_\+t} $\ast$datatype, int src, int tag, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, struct \hyperlink{structompi__request__t}{ompi\+\_\+request\+\_\+t} $\ast$$\ast$\hyperlink{structrequest}{request})}\label{pml__ob1_8h_aad22e71e6ffe1240fa2f27265ed53c0d}

\item 
\hypertarget{pml__ob1_8h_a65f4bb0e3d2f3dd095b2bec0047b3122}{int {\bfseries mca\+\_\+pml\+\_\+ob1\+\_\+irecv} (void $\ast$buf, size\+\_\+t count, \hyperlink{structompi__datatype__t}{ompi\+\_\+datatype\+\_\+t} $\ast$datatype, int src, int tag, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, struct \hyperlink{structompi__request__t}{ompi\+\_\+request\+\_\+t} $\ast$$\ast$\hyperlink{structrequest}{request})}\label{pml__ob1_8h_a65f4bb0e3d2f3dd095b2bec0047b3122}

\item 
\hypertarget{pml__ob1_8h_ab74876a52ba05468cbd1b28a5fc4b4a9}{int {\bfseries mca\+\_\+pml\+\_\+ob1\+\_\+recv} (void $\ast$buf, size\+\_\+t count, \hyperlink{structompi__datatype__t}{ompi\+\_\+datatype\+\_\+t} $\ast$datatype, int src, int tag, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, \hyperlink{structompi__status__public__t}{ompi\+\_\+status\+\_\+public\+\_\+t} $\ast$status)}\label{pml__ob1_8h_ab74876a52ba05468cbd1b28a5fc4b4a9}

\item 
\hypertarget{pml__ob1_8h_af2fb183d380ac7e1900b87dcaa4099f5}{int {\bfseries mca\+\_\+pml\+\_\+ob1\+\_\+imrecv} (void $\ast$buf, size\+\_\+t count, \hyperlink{structompi__datatype__t}{ompi\+\_\+datatype\+\_\+t} $\ast$datatype, struct \hyperlink{structompi__message__t}{ompi\+\_\+message\+\_\+t} $\ast$$\ast$message, struct \hyperlink{structompi__request__t}{ompi\+\_\+request\+\_\+t} $\ast$$\ast$\hyperlink{structrequest}{request})}\label{pml__ob1_8h_af2fb183d380ac7e1900b87dcaa4099f5}

\item 
\hypertarget{pml__ob1_8h_a7384ff4fd151c7b009e6b59030aa7c72}{int {\bfseries mca\+\_\+pml\+\_\+ob1\+\_\+mrecv} (void $\ast$buf, size\+\_\+t count, \hyperlink{structompi__datatype__t}{ompi\+\_\+datatype\+\_\+t} $\ast$datatype, struct \hyperlink{structompi__message__t}{ompi\+\_\+message\+\_\+t} $\ast$$\ast$message, \hyperlink{structompi__status__public__t}{ompi\+\_\+status\+\_\+public\+\_\+t} $\ast$status)}\label{pml__ob1_8h_a7384ff4fd151c7b009e6b59030aa7c72}

\item 
\hypertarget{pml__ob1_8h_ae620f97cffda1b61ee1e9c511282ad1f}{int {\bfseries mca\+\_\+pml\+\_\+ob1\+\_\+dump} (struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, int verbose)}\label{pml__ob1_8h_ae620f97cffda1b61ee1e9c511282ad1f}

\item 
int \hyperlink{pml__ob1_8h_a8442f0814c007de63985740cee12e866}{mca\+\_\+pml\+\_\+ob1\+\_\+start} (size\+\_\+t count, \hyperlink{structompi__request__t}{ompi\+\_\+request\+\_\+t} $\ast$$\ast$requests)
\item 
\hypertarget{pml__ob1_8h_a583571fa4c9ef3551e3da48dda5a55ce}{int {\bfseries mca\+\_\+pml\+\_\+ob1\+\_\+ft\+\_\+event} (int state)}\label{pml__ob1_8h_a583571fa4c9ef3551e3da48dda5a55ce}

\item 
\hypertarget{pml__ob1_8h_aea39f7560918137b43b5872ad7f58db9}{{\bfseries O\+B\+J\+\_\+\+C\+L\+A\+S\+S\+\_\+\+D\+E\+C\+L\+A\+R\+A\+T\+I\+O\+N} (\hyperlink{structmca__pml__ob1__pckt__pending__t}{mca\+\_\+pml\+\_\+ob1\+\_\+pckt\+\_\+pending\+\_\+t})}\label{pml__ob1_8h_aea39f7560918137b43b5872ad7f58db9}

\item 
int \hyperlink{pml__ob1_8h_ac360a0aecf27dbab73025e59214a6d35}{mca\+\_\+pml\+\_\+ob1\+\_\+send\+\_\+fin} (\hyperlink{structompi__proc__t}{ompi\+\_\+proc\+\_\+t} $\ast$proc, \hyperlink{structmca__bml__base__btl__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t} $\ast$bml\+\_\+btl, \hyperlink{unionompi__ptr__t}{ompi\+\_\+ptr\+\_\+t} hdr\+\_\+des, uint8\+\_\+t order, uint32\+\_\+t status)
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} an F\+I\+N to the peer. \end{DoxyCompactList}\item 
\hypertarget{pml__ob1_8h_af2c32981cc2702f9bd20527a0fb8fbfd}{void {\bfseries mca\+\_\+pml\+\_\+ob1\+\_\+process\+\_\+pending\+\_\+packets} (\hyperlink{structmca__bml__base__btl__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t} $\ast$bml\+\_\+btl)}\label{pml__ob1_8h_af2c32981cc2702f9bd20527a0fb8fbfd}

\item 
\hypertarget{pml__ob1_8h_a63a1a1e3df2b49181899a17dfc564883}{void {\bfseries mca\+\_\+pml\+\_\+ob1\+\_\+process\+\_\+pending\+\_\+rdma} (void)}\label{pml__ob1_8h_a63a1a1e3df2b49181899a17dfc564883}

\item 
\hypertarget{pml__ob1_8h_a29274b21a4bfa77956fb5b47a964c9a3}{int {\bfseries mca\+\_\+pml\+\_\+ob1\+\_\+com\+\_\+btl\+\_\+comp} (const void $\ast$v1, const void $\ast$v2)}\label{pml__ob1_8h_a29274b21a4bfa77956fb5b47a964c9a3}

\item 
\hypertarget{pml__ob1_8h_a42c1f5feff7c6e304b4e49910ac558a9}{static void {\bfseries mca\+\_\+pml\+\_\+ob1\+\_\+calc\+\_\+weighted\+\_\+length} (\hyperlink{structmca__pml__ob1__com__btl__t}{mca\+\_\+pml\+\_\+ob1\+\_\+com\+\_\+btl\+\_\+t} $\ast$btls, int num\+\_\+btls, size\+\_\+t size, double weight\+\_\+total)}\label{pml__ob1_8h_a42c1f5feff7c6e304b4e49910ac558a9}

\end{DoxyCompactItemize}
\subsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\hypertarget{pml__ob1_8h_af1b8a42c94970693e7fed3af441584cb}{\hyperlink{structmca__pml__ob1__t}{mca\+\_\+pml\+\_\+ob1\+\_\+t} {\bfseries mca\+\_\+pml\+\_\+ob1}}\label{pml__ob1_8h_af1b8a42c94970693e7fed3af441584cb}

\item 
\hypertarget{pml__ob1_8h_a384af947113debcdea4b9faa82823231}{int {\bfseries mca\+\_\+pml\+\_\+ob1\+\_\+output}}\label{pml__ob1_8h_a384af947113debcdea4b9faa82823231}

\end{DoxyCompactItemize}


\subsection{Macro Definition Documentation}
\hypertarget{pml__ob1_8h_a0f2d0714237dac0cef8d9e17f42bb48c}{\index{pml\+\_\+ob1.\+h@{pml\+\_\+ob1.\+h}!M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+A\+D\+D\+\_\+\+F\+I\+N\+\_\+\+T\+O\+\_\+\+P\+E\+N\+D\+I\+N\+G@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+A\+D\+D\+\_\+\+F\+I\+N\+\_\+\+T\+O\+\_\+\+P\+E\+N\+D\+I\+N\+G}}
\index{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+A\+D\+D\+\_\+\+F\+I\+N\+\_\+\+T\+O\+\_\+\+P\+E\+N\+D\+I\+N\+G@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+A\+D\+D\+\_\+\+F\+I\+N\+\_\+\+T\+O\+\_\+\+P\+E\+N\+D\+I\+N\+G}!pml\+\_\+ob1.\+h@{pml\+\_\+ob1.\+h}}
\subsubsection[{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+A\+D\+D\+\_\+\+F\+I\+N\+\_\+\+T\+O\+\_\+\+P\+E\+N\+D\+I\+N\+G}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+A\+D\+D\+\_\+\+F\+I\+N\+\_\+\+T\+O\+\_\+\+P\+E\+N\+D\+I\+N\+G(
\begin{DoxyParamCaption}
\item[{}]{P, }
\item[{}]{D, }
\item[{}]{B, }
\item[{}]{O, }
\item[{}]{S}
\end{DoxyParamCaption}
)}}\label{pml__ob1_8h_a0f2d0714237dac0cef8d9e17f42bb48c}
{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{do} \{                                                            \(\backslash\)
        mca\_pml\_ob1\_pckt\_pending\_t *\_pckt;                          \(\backslash\)
        int \_rc;                                                    \(\backslash\)
                                                                    \(\backslash\)
        MCA\_PML\_OB1\_PCKT\_PENDING\_ALLOC(\_pckt,\_rc);                  \(\backslash\)
        \_pckt->hdr.hdr\_common.hdr\_type = MCA\_PML\_OB1\_HDR\_TYPE\_FIN;  \(\backslash\)
        \_pckt->hdr.hdr\_fin.hdr\_des = (D);                           \(\backslash\)
        \_pckt->hdr.hdr\_fin.hdr\_fail = (S);                          \(\backslash\)
        \_pckt->proc = (P);                                          \(\backslash\)
        \_pckt->bml\_btl = (B);                                       \(\backslash\)
        \_pckt->order = (O);                                         \hyperlink{opal_2threads_2mutex_8h_a77efbafa6bfd030f2fca7658458a1f6d}{\(\backslash\)}
\hyperlink{opal_2threads_2mutex_8h_a77efbafa6bfd030f2fca7658458a1f6d}{        OPAL\_THREAD\_LOCK}(&mca\_pml\_ob1.lock);                        
      \hyperlink{opal__list_8h_acf822c5c351cd03b2c86e48cf9aaa158}{\(\backslash\)}
\hyperlink{opal__list_8h_acf822c5c351cd03b2c86e48cf9aaa158}{        opal\_list\_append}(&mca\_pml\_ob1.pckt\_pending,                 \(\backslash\)
                (\hyperlink{structopal__list__item__t}{opal\_list\_item\_t}*)\_pckt);                          
      \hyperlink{opal_2threads_2mutex_8h_a26cea76373139434c7f03b24a58b6c04}{\(\backslash\)}
\hyperlink{opal_2threads_2mutex_8h_a26cea76373139434c7f03b24a58b6c04}{        OPAL\_THREAD\_UNLOCK}(&mca\_pml\_ob1.lock);                      \(\backslash\)
        (void)\_rc;                                                  \(\backslash\)
    \} \textcolor{keywordflow}{while}(0)
\end{DoxyCode}
\hypertarget{pml__ob1_8h_aeb5cc1cbce3a92991c99bfdea1f3d30f}{\index{pml\+\_\+ob1.\+h@{pml\+\_\+ob1.\+h}!M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+S\+E\+G\+M\+E\+N\+T\+\_\+\+L\+E\+N\+G\+T\+H@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+S\+E\+G\+M\+E\+N\+T\+\_\+\+L\+E\+N\+G\+T\+H}}
\index{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+S\+E\+G\+M\+E\+N\+T\+\_\+\+L\+E\+N\+G\+T\+H@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+S\+E\+G\+M\+E\+N\+T\+\_\+\+L\+E\+N\+G\+T\+H}!pml\+\_\+ob1.\+h@{pml\+\_\+ob1.\+h}}
\subsubsection[{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+S\+E\+G\+M\+E\+N\+T\+\_\+\+L\+E\+N\+G\+T\+H}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+S\+E\+G\+M\+E\+N\+T\+\_\+\+L\+E\+N\+G\+T\+H(
\begin{DoxyParamCaption}
\item[{}]{segments, }
\item[{}]{count, }
\item[{}]{hdrlen, }
\item[{}]{length}
\end{DoxyParamCaption}
)}}\label{pml__ob1_8h_aeb5cc1cbce3a92991c99bfdea1f3d30f}
{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{do} \{                                                                        \(\backslash\)
   size\_t i;                                                                \(\backslash\)
                                                                            \(\backslash\)
   for( i = 0; i < count; i++ ) \{                                           \(\backslash\)
       length += segments[i].seg\_len;                                       \(\backslash\)
   \}                                                                        \(\backslash\)
   length -= hdrlen;                                                        \(\backslash\)
\} \textcolor{keywordflow}{while}(0)
\end{DoxyCode}
\hypertarget{pml__ob1_8h_ae0796ab519f028cb77b6d0cf589a09ba}{\index{pml\+\_\+ob1.\+h@{pml\+\_\+ob1.\+h}!M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+A\+L\+L\+O\+C@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+A\+L\+L\+O\+C}}
\index{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+A\+L\+L\+O\+C@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+A\+L\+L\+O\+C}!pml\+\_\+ob1.\+h@{pml\+\_\+ob1.\+h}}
\subsubsection[{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+A\+L\+L\+O\+C}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+A\+L\+L\+O\+C(
\begin{DoxyParamCaption}
\item[{}]{pckt, }
\item[{}]{rc}
\end{DoxyParamCaption}
)}}\label{pml__ob1_8h_ae0796ab519f028cb77b6d0cf589a09ba}
{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{do} \{                                                            \(\backslash\)
    ompi\_free\_list\_item\_t* item;                                \(\backslash\)
    OMPI\_FREE\_LIST\_WAIT(&mca\_pml\_ob1.pending\_pckts, item, rc);  \(\backslash\)
    pckt = (\hyperlink{structmca__pml__ob1__pckt__pending__t}{mca\_pml\_ob1\_pckt\_pending\_t}*)item;                   \(\backslash\)
\} \textcolor{keywordflow}{while} (0)
\end{DoxyCode}
\hypertarget{pml__ob1_8h_af0149efc5ce73d1c1328ac6da8e22357}{\index{pml\+\_\+ob1.\+h@{pml\+\_\+ob1.\+h}!M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+R\+E\+T\+U\+R\+N@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+R\+E\+T\+U\+R\+N}}
\index{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+R\+E\+T\+U\+R\+N@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+R\+E\+T\+U\+R\+N}!pml\+\_\+ob1.\+h@{pml\+\_\+ob1.\+h}}
\subsubsection[{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+R\+E\+T\+U\+R\+N}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+R\+E\+T\+U\+R\+N(
\begin{DoxyParamCaption}
\item[{}]{pckt}
\end{DoxyParamCaption}
)}}\label{pml__ob1_8h_af0149efc5ce73d1c1328ac6da8e22357}
{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{do} \{                                                            \(\backslash\)
    \textcolor{comment}{/* return packet */}                                         \(\backslash\)
    OMPI\_FREE\_LIST\_RETURN(&mca\_pml\_ob1.pending\_pckts,           \(\backslash\)
        (\hyperlink{structompi__free__list__item__t}{ompi\_free\_list\_item\_t}*)pckt);                          \(\backslash\)
\} \textcolor{keywordflow}{while}(0)
\end{DoxyCode}
\hypertarget{pml__ob1_8h_a41de41ef7dc7fdc59838fa11ef90fd0b}{\index{pml\+\_\+ob1.\+h@{pml\+\_\+ob1.\+h}!M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+P\+R\+O\+G\+R\+E\+S\+S\+\_\+\+P\+E\+N\+D\+I\+N\+G@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+P\+R\+O\+G\+R\+E\+S\+S\+\_\+\+P\+E\+N\+D\+I\+N\+G}}
\index{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+P\+R\+O\+G\+R\+E\+S\+S\+\_\+\+P\+E\+N\+D\+I\+N\+G@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+P\+R\+O\+G\+R\+E\+S\+S\+\_\+\+P\+E\+N\+D\+I\+N\+G}!pml\+\_\+ob1.\+h@{pml\+\_\+ob1.\+h}}
\subsubsection[{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+P\+R\+O\+G\+R\+E\+S\+S\+\_\+\+P\+E\+N\+D\+I\+N\+G}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+O\+B1\+\_\+\+P\+R\+O\+G\+R\+E\+S\+S\+\_\+\+P\+E\+N\+D\+I\+N\+G(
\begin{DoxyParamCaption}
\item[{}]{bml\+\_\+btl}
\end{DoxyParamCaption}
)}}\label{pml__ob1_8h_a41de41ef7dc7fdc59838fa11ef90fd0b}
{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{do} \{                                                        \(\backslash\)
        if(\hyperlink{opal__list_8h_aec770d8385a74a16b713bd0f8028e531}{opal\_list\_get\_size}(&mca\_pml\_ob1.pckt\_pending))       \(\backslash\)
            mca\_pml\_ob1\_process\_pending\_packets(bml\_btl);       \(\backslash\)
        if(\hyperlink{opal__list_8h_aec770d8385a74a16b713bd0f8028e531}{opal\_list\_get\_size}(&mca\_pml\_ob1.recv\_pending))       \(\backslash\)
            mca\_pml\_ob1\_recv\_request\_process\_pending();         \(\backslash\)
        if(\hyperlink{opal__list_8h_aec770d8385a74a16b713bd0f8028e531}{opal\_list\_get\_size}(&mca\_pml\_ob1.send\_pending))       \(\backslash\)
            mca\_pml\_ob1\_send\_request\_process\_pending(bml\_btl);  \(\backslash\)
        if(\hyperlink{opal__list_8h_aec770d8385a74a16b713bd0f8028e531}{opal\_list\_get\_size}(&mca\_pml\_ob1.rdma\_pending))       \(\backslash\)
            mca\_pml\_ob1\_process\_pending\_rdma();                 \(\backslash\)
    \} \textcolor{keywordflow}{while} (0)
\end{DoxyCode}


\subsection{Function Documentation}
\hypertarget{pml__ob1_8h_a4ca901a09e8a1bf8fc500c013e30f75b}{\index{pml\+\_\+ob1.\+h@{pml\+\_\+ob1.\+h}!mca\+\_\+pml\+\_\+ob1\+\_\+enable@{mca\+\_\+pml\+\_\+ob1\+\_\+enable}}
\index{mca\+\_\+pml\+\_\+ob1\+\_\+enable@{mca\+\_\+pml\+\_\+ob1\+\_\+enable}!pml\+\_\+ob1.\+h@{pml\+\_\+ob1.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+ob1\+\_\+enable}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+pml\+\_\+ob1\+\_\+enable (
\begin{DoxyParamCaption}
\item[{bool}]{enable}
\end{DoxyParamCaption}
)}}\label{pml__ob1_8h_a4ca901a09e8a1bf8fc500c013e30f75b}
If we get here this is the P\+M\+L who get selected for the run. We should get ownership for the send and receive requests list, and initialize them with the size of our own requests.

References mca\+\_\+pml\+\_\+base\+\_\+send\+\_\+requests, O\+B\+J\+\_\+\+C\+L\+A\+S\+S, and O\+B\+J\+\_\+\+C\+O\+N\+S\+T\+R\+U\+C\+T.

\hypertarget{pml__ob1_8h_ac360a0aecf27dbab73025e59214a6d35}{\index{pml\+\_\+ob1.\+h@{pml\+\_\+ob1.\+h}!mca\+\_\+pml\+\_\+ob1\+\_\+send\+\_\+fin@{mca\+\_\+pml\+\_\+ob1\+\_\+send\+\_\+fin}}
\index{mca\+\_\+pml\+\_\+ob1\+\_\+send\+\_\+fin@{mca\+\_\+pml\+\_\+ob1\+\_\+send\+\_\+fin}!pml\+\_\+ob1.\+h@{pml\+\_\+ob1.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+ob1\+\_\+send\+\_\+fin}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+pml\+\_\+ob1\+\_\+send\+\_\+fin (
\begin{DoxyParamCaption}
\item[{{\bf ompi\+\_\+proc\+\_\+t} $\ast$}]{proc, }
\item[{{\bf mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t} $\ast$}]{bml\+\_\+btl, }
\item[{{\bf ompi\+\_\+ptr\+\_\+t}}]{hdr\+\_\+des, }
\item[{uint8\+\_\+t}]{order, }
\item[{uint32\+\_\+t}]{status}
\end{DoxyParamCaption}
)}}\label{pml__ob1_8h_ac360a0aecf27dbab73025e59214a6d35}


\hyperlink{structSend}{Send} an F\+I\+N to the peer. 

If we fail to send this ack (no more available fragments or the send failed) this function automatically add the F\+I\+N to the list of pending F\+I\+N, Which guarantee that the F\+I\+N will be sent later. 

References mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+cbdata, mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+cbfunc, mca\+\_\+btl\+\_\+base\+\_\+descriptor\+\_\+t\+::des\+\_\+src, mca\+\_\+pml\+\_\+ob1\+\_\+fin\+\_\+hdr\+\_\+t\+::hdr\+\_\+common, mca\+\_\+pml\+\_\+ob1\+\_\+fin\+\_\+hdr\+\_\+t\+::hdr\+\_\+des, mca\+\_\+pml\+\_\+ob1\+\_\+fin\+\_\+hdr\+\_\+t\+::hdr\+\_\+fail, mca\+\_\+pml\+\_\+ob1\+\_\+common\+\_\+hdr\+\_\+t\+::hdr\+\_\+flags, mca\+\_\+pml\+\_\+ob1\+\_\+common\+\_\+hdr\+\_\+t\+::hdr\+\_\+type, and mca\+\_\+btl\+\_\+base\+\_\+segment\+\_\+t\+::seg\+\_\+addr.

\hypertarget{pml__ob1_8h_a8442f0814c007de63985740cee12e866}{\index{pml\+\_\+ob1.\+h@{pml\+\_\+ob1.\+h}!mca\+\_\+pml\+\_\+ob1\+\_\+start@{mca\+\_\+pml\+\_\+ob1\+\_\+start}}
\index{mca\+\_\+pml\+\_\+ob1\+\_\+start@{mca\+\_\+pml\+\_\+ob1\+\_\+start}!pml\+\_\+ob1.\+h@{pml\+\_\+ob1.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+ob1\+\_\+start}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+pml\+\_\+ob1\+\_\+start (
\begin{DoxyParamCaption}
\item[{size\+\_\+t}]{count, }
\item[{{\bf ompi\+\_\+request\+\_\+t} $\ast$$\ast$}]{requests}
\end{DoxyParamCaption}
)}}\label{pml__ob1_8h_a8442f0814c007de63985740cee12e866}
Reset the convertor in case we're dealing with the original request, which when completed do not reset the convertor.

References O\+P\+A\+L\+\_\+\+T\+H\+R\+E\+A\+D\+\_\+\+L\+O\+C\+K, O\+P\+A\+L\+\_\+\+T\+H\+R\+E\+A\+D\+\_\+\+U\+N\+L\+O\+C\+K, mca\+\_\+pml\+\_\+base\+\_\+request\+\_\+t\+::req\+\_\+addr, mca\+\_\+pml\+\_\+base\+\_\+send\+\_\+request\+\_\+t\+::req\+\_\+base, mca\+\_\+pml\+\_\+base\+\_\+send\+\_\+request\+\_\+t\+::req\+\_\+bytes\+\_\+packed, mca\+\_\+pml\+\_\+base\+\_\+request\+\_\+t\+::req\+\_\+comm, mca\+\_\+pml\+\_\+base\+\_\+request\+\_\+t\+::req\+\_\+convertor, mca\+\_\+pml\+\_\+base\+\_\+request\+\_\+t\+::req\+\_\+count, mca\+\_\+pml\+\_\+base\+\_\+request\+\_\+t\+::req\+\_\+datatype, mca\+\_\+pml\+\_\+base\+\_\+request\+\_\+t\+::req\+\_\+free\+\_\+called, mca\+\_\+pml\+\_\+base\+\_\+request\+\_\+t\+::req\+\_\+ompi, mca\+\_\+pml\+\_\+base\+\_\+request\+\_\+t\+::req\+\_\+peer, mca\+\_\+pml\+\_\+base\+\_\+request\+\_\+t\+::req\+\_\+pml\+\_\+complete, ompi\+\_\+request\+\_\+t\+::req\+\_\+state, mca\+\_\+pml\+\_\+base\+\_\+request\+\_\+t\+::req\+\_\+tag, and mca\+\_\+pml\+\_\+base\+\_\+request\+\_\+t\+::req\+\_\+type.

