\hypertarget{pml__bfo_8h}{\section{ompi/mca/pml/bfo/pml\+\_\+bfo.h File Reference}
\label{pml__bfo_8h}\index{ompi/mca/pml/bfo/pml\+\_\+bfo.\+h@{ompi/mca/pml/bfo/pml\+\_\+bfo.\+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\+\_\+bfo\+\_\+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__bfo__t}{mca\+\_\+pml\+\_\+bfo\+\_\+t}
\begin{DoxyCompactList}\small\item\em B\+F\+O P\+M\+L module. \end{DoxyCompactList}\item 
struct \hyperlink{structmca__pml__bfo__pckt__pending__t}{mca\+\_\+pml\+\_\+bfo\+\_\+pckt\+\_\+pending\+\_\+t}
\item 
struct \hyperlink{structmca__pml__bfo__com__btl__t}{mca\+\_\+pml\+\_\+bfo\+\_\+com\+\_\+btl\+\_\+t}
\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define {\bfseries M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+F\+O\+\_\+\+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\+\_\+\+B\+F\+O\+\_\+\+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\+\_\+\+B\+F\+O\+\_\+\+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\+\_\+\+B\+F\+O\+\_\+\+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\+\_\+\+B\+F\+O\+\_\+\+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__bfo_8h_adacb8b01beecc195d46e13003c39db18}{typedef struct \hyperlink{structmca__pml__bfo__t}{mca\+\_\+pml\+\_\+bfo\+\_\+t} {\bfseries mca\+\_\+pml\+\_\+bfo\+\_\+t}}\label{pml__bfo_8h_adacb8b01beecc195d46e13003c39db18}

\item 
\hypertarget{pml__bfo_8h_a8309e6f5e1ac8c8c32fc57bcd86324d8}{typedef struct \\*
\hyperlink{structmca__pml__bfo__pckt__pending__t}{mca\+\_\+pml\+\_\+bfo\+\_\+pckt\+\_\+pending\+\_\+t} {\bfseries mca\+\_\+pml\+\_\+bfo\+\_\+pckt\+\_\+pending\+\_\+t}}\label{pml__bfo_8h_a8309e6f5e1ac8c8c32fc57bcd86324d8}

\item 
\hypertarget{pml__bfo_8h_a4f32ae957febba68704d1ec68d3f17ee}{typedef struct \\*
\hyperlink{structmca__pml__bfo__com__btl__t}{mca\+\_\+pml\+\_\+bfo\+\_\+com\+\_\+btl\+\_\+t} {\bfseries mca\+\_\+pml\+\_\+bfo\+\_\+com\+\_\+btl\+\_\+t}}\label{pml__bfo_8h_a4f32ae957febba68704d1ec68d3f17ee}

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

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

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

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

\item 
int \hyperlink{pml__bfo_8h_a31e6ba3662790f672383eaa8a57eb654}{mca\+\_\+pml\+\_\+bfo\+\_\+enable} (bool enable)
\item 
\hypertarget{pml__bfo_8h_aad5a9037298bf777c24986e26906194a}{int {\bfseries mca\+\_\+pml\+\_\+bfo\+\_\+progress} (void)}\label{pml__bfo_8h_aad5a9037298bf777c24986e26906194a}

\item 
\hypertarget{pml__bfo_8h_a01241972ac6c3e1d59f8acc7f01e0818}{int {\bfseries mca\+\_\+pml\+\_\+bfo\+\_\+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__bfo_8h_a01241972ac6c3e1d59f8acc7f01e0818}

\item 
\hypertarget{pml__bfo_8h_aa754ff09fb6a2d32cd3e63fd8887ac58}{int {\bfseries mca\+\_\+pml\+\_\+bfo\+\_\+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__bfo_8h_aa754ff09fb6a2d32cd3e63fd8887ac58}

\item 
\hypertarget{pml__bfo_8h_a81e3e0bf6bdfc1b208406cb8f1d7b2b1}{int {\bfseries mca\+\_\+pml\+\_\+bfo\+\_\+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__bfo_8h_a81e3e0bf6bdfc1b208406cb8f1d7b2b1}

\item 
\hypertarget{pml__bfo_8h_aefc29e72f3247b9be4d45a5b3d3be604}{int {\bfseries mca\+\_\+pml\+\_\+bfo\+\_\+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__bfo_8h_aefc29e72f3247b9be4d45a5b3d3be604}

\item 
\hypertarget{pml__bfo_8h_a13fa4179b94babc5d5e19ea5bb12f023}{int {\bfseries mca\+\_\+pml\+\_\+bfo\+\_\+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__bfo_8h_a13fa4179b94babc5d5e19ea5bb12f023}

\item 
\hypertarget{pml__bfo_8h_abc826ab1d4973a83cc0eb786c8753bc2}{int {\bfseries mca\+\_\+pml\+\_\+bfo\+\_\+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__bfo_8h_abc826ab1d4973a83cc0eb786c8753bc2}

\item 
\hypertarget{pml__bfo_8h_ad5643db353e5f50a674350e6afcd654a}{int {\bfseries mca\+\_\+pml\+\_\+bfo\+\_\+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__bfo_8h_ad5643db353e5f50a674350e6afcd654a}

\item 
\hypertarget{pml__bfo_8h_a3b3f995c9e4abba790524a9bda79bfff}{int {\bfseries mca\+\_\+pml\+\_\+bfo\+\_\+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__bfo_8h_a3b3f995c9e4abba790524a9bda79bfff}

\item 
\hypertarget{pml__bfo_8h_a88a29c57cff6ac37234c90fca9aead4c}{int {\bfseries mca\+\_\+pml\+\_\+bfo\+\_\+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__bfo_8h_a88a29c57cff6ac37234c90fca9aead4c}

\item 
\hypertarget{pml__bfo_8h_a3895300fbbce352272afa95114d74c64}{int {\bfseries mca\+\_\+pml\+\_\+bfo\+\_\+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__bfo_8h_a3895300fbbce352272afa95114d74c64}

\item 
\hypertarget{pml__bfo_8h_ae9c11a9d45e46cd07e8c44c269add831}{int {\bfseries mca\+\_\+pml\+\_\+bfo\+\_\+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__bfo_8h_ae9c11a9d45e46cd07e8c44c269add831}

\item 
\hypertarget{pml__bfo_8h_a507525dd9bc54a4a7a20bf69ff0bd89a}{int {\bfseries mca\+\_\+pml\+\_\+bfo\+\_\+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__bfo_8h_a507525dd9bc54a4a7a20bf69ff0bd89a}

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

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

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

\item 
int \hyperlink{pml__bfo_8h_a3fa0821a8f477cf55f0dab0b2e2b6ff4}{mca\+\_\+pml\+\_\+bfo\+\_\+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__bfo_8h_abc2085f1fafc7e6ffec487d25472f182}{void {\bfseries mca\+\_\+pml\+\_\+bfo\+\_\+process\+\_\+pending\+\_\+packets} (\hyperlink{structmca__bml__base__btl__t}{mca\+\_\+bml\+\_\+base\+\_\+btl\+\_\+t} $\ast$bml\+\_\+btl)}\label{pml__bfo_8h_abc2085f1fafc7e6ffec487d25472f182}

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

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

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

\end{DoxyCompactItemize}
\subsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\hypertarget{pml__bfo_8h_aa87c214f3095371aadf9a5d834d4c285}{\hyperlink{structmca__pml__bfo__t}{mca\+\_\+pml\+\_\+bfo\+\_\+t} {\bfseries mca\+\_\+pml\+\_\+bfo}}\label{pml__bfo_8h_aa87c214f3095371aadf9a5d834d4c285}

\item 
\hypertarget{pml__bfo_8h_ad8d5c6c416457342a7396c6b4ed0e78b}{int {\bfseries mca\+\_\+pml\+\_\+bfo\+\_\+output}}\label{pml__bfo_8h_ad8d5c6c416457342a7396c6b4ed0e78b}

\end{DoxyCompactItemize}


\subsection{Macro Definition Documentation}
\hypertarget{pml__bfo_8h_aa01ac8cefcb6e622ac59cf79eb32ff69}{\index{pml\+\_\+bfo.\+h@{pml\+\_\+bfo.\+h}!M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+F\+O\+\_\+\+A\+D\+D\+\_\+\+F\+I\+N\+\_\+\+T\+O\+\_\+\+P\+E\+N\+D\+I\+N\+G@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+F\+O\+\_\+\+A\+D\+D\+\_\+\+F\+I\+N\+\_\+\+T\+O\+\_\+\+P\+E\+N\+D\+I\+N\+G}}
\index{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+F\+O\+\_\+\+A\+D\+D\+\_\+\+F\+I\+N\+\_\+\+T\+O\+\_\+\+P\+E\+N\+D\+I\+N\+G@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+F\+O\+\_\+\+A\+D\+D\+\_\+\+F\+I\+N\+\_\+\+T\+O\+\_\+\+P\+E\+N\+D\+I\+N\+G}!pml\+\_\+bfo.\+h@{pml\+\_\+bfo.\+h}}
\subsubsection[{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+F\+O\+\_\+\+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\+\_\+\+B\+F\+O\+\_\+\+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__bfo_8h_aa01ac8cefcb6e622ac59cf79eb32ff69}
{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{do} \{                                                            \(\backslash\)
        mca\_pml\_bfo\_pckt\_pending\_t *\_pckt;                          \(\backslash\)
        int \_rc;                                                    \(\backslash\)
                                                                    \(\backslash\)
        MCA\_PML\_BFO\_PCKT\_PENDING\_ALLOC(\_pckt,\_rc);                  \(\backslash\)
        \_pckt->hdr.hdr\_common.hdr\_type = MCA\_PML\_BFO\_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\_bfo.lock);                        
      \hyperlink{opal__list_8h_acf822c5c351cd03b2c86e48cf9aaa158}{\(\backslash\)}
\hyperlink{opal__list_8h_acf822c5c351cd03b2c86e48cf9aaa158}{        opal\_list\_append}(&mca\_pml\_bfo.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\_bfo.lock);                      \(\backslash\)
    \} \textcolor{keywordflow}{while}(0)
\end{DoxyCode}
\hypertarget{pml__bfo_8h_a59833d5c64b1baf6efbecf9cc72f444f}{\index{pml\+\_\+bfo.\+h@{pml\+\_\+bfo.\+h}!M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+F\+O\+\_\+\+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\+\_\+\+B\+F\+O\+\_\+\+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\+\_\+\+B\+F\+O\+\_\+\+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\+\_\+\+B\+F\+O\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+S\+E\+G\+M\+E\+N\+T\+\_\+\+L\+E\+N\+G\+T\+H}!pml\+\_\+bfo.\+h@{pml\+\_\+bfo.\+h}}
\subsubsection[{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+F\+O\+\_\+\+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\+\_\+\+B\+F\+O\+\_\+\+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__bfo_8h_a59833d5c64b1baf6efbecf9cc72f444f}
{\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__bfo_8h_ac83fea82d28caee77007c11d45ba1304}{\index{pml\+\_\+bfo.\+h@{pml\+\_\+bfo.\+h}!M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+F\+O\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+A\+L\+L\+O\+C@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+F\+O\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+A\+L\+L\+O\+C}}
\index{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+F\+O\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+A\+L\+L\+O\+C@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+F\+O\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+A\+L\+L\+O\+C}!pml\+\_\+bfo.\+h@{pml\+\_\+bfo.\+h}}
\subsubsection[{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+F\+O\+\_\+\+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\+\_\+\+B\+F\+O\+\_\+\+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__bfo_8h_ac83fea82d28caee77007c11d45ba1304}
{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{do} \{                                                            \(\backslash\)
    ompi\_free\_list\_item\_t* item;                                \(\backslash\)
    OMPI\_FREE\_LIST\_WAIT(&mca\_pml\_bfo.pending\_pckts, item, rc);  \(\backslash\)
    pckt = (\hyperlink{structmca__pml__bfo__pckt__pending__t}{mca\_pml\_bfo\_pckt\_pending\_t}*)item;                   \(\backslash\)
\} \textcolor{keywordflow}{while} (0)
\end{DoxyCode}
\hypertarget{pml__bfo_8h_aa9ba093049321439583ce620bbab46b6}{\index{pml\+\_\+bfo.\+h@{pml\+\_\+bfo.\+h}!M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+F\+O\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+R\+E\+T\+U\+R\+N@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+F\+O\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+R\+E\+T\+U\+R\+N}}
\index{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+F\+O\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+R\+E\+T\+U\+R\+N@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+F\+O\+\_\+\+P\+C\+K\+T\+\_\+\+P\+E\+N\+D\+I\+N\+G\+\_\+\+R\+E\+T\+U\+R\+N}!pml\+\_\+bfo.\+h@{pml\+\_\+bfo.\+h}}
\subsubsection[{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+F\+O\+\_\+\+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\+\_\+\+B\+F\+O\+\_\+\+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__bfo_8h_aa9ba093049321439583ce620bbab46b6}
{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{do} \{                                                            \(\backslash\)
    \textcolor{comment}{/* return packet */}                                         \(\backslash\)
    OMPI\_FREE\_LIST\_RETURN(&mca\_pml\_bfo.pending\_pckts,           \(\backslash\)
        (\hyperlink{structompi__free__list__item__t}{ompi\_free\_list\_item\_t}*)pckt);                          \(\backslash\)
\} \textcolor{keywordflow}{while}(0)
\end{DoxyCode}
\hypertarget{pml__bfo_8h_a0145312b5c4b19c7c4d047214eda996f}{\index{pml\+\_\+bfo.\+h@{pml\+\_\+bfo.\+h}!M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+F\+O\+\_\+\+P\+R\+O\+G\+R\+E\+S\+S\+\_\+\+P\+E\+N\+D\+I\+N\+G@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+F\+O\+\_\+\+P\+R\+O\+G\+R\+E\+S\+S\+\_\+\+P\+E\+N\+D\+I\+N\+G}}
\index{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+F\+O\+\_\+\+P\+R\+O\+G\+R\+E\+S\+S\+\_\+\+P\+E\+N\+D\+I\+N\+G@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+F\+O\+\_\+\+P\+R\+O\+G\+R\+E\+S\+S\+\_\+\+P\+E\+N\+D\+I\+N\+G}!pml\+\_\+bfo.\+h@{pml\+\_\+bfo.\+h}}
\subsubsection[{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+F\+O\+\_\+\+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\+\_\+\+B\+F\+O\+\_\+\+P\+R\+O\+G\+R\+E\+S\+S\+\_\+\+P\+E\+N\+D\+I\+N\+G(
\begin{DoxyParamCaption}
\item[{}]{bml\+\_\+btl}
\end{DoxyParamCaption}
)}}\label{pml__bfo_8h_a0145312b5c4b19c7c4d047214eda996f}
{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{do} \{                                                        \(\backslash\)
        if(\hyperlink{opal__list_8h_aec770d8385a74a16b713bd0f8028e531}{opal\_list\_get\_size}(&mca\_pml\_bfo.pckt\_pending))       \(\backslash\)
            mca\_pml\_bfo\_process\_pending\_packets(bml\_btl);       \(\backslash\)
        if(\hyperlink{opal__list_8h_aec770d8385a74a16b713bd0f8028e531}{opal\_list\_get\_size}(&mca\_pml\_bfo.recv\_pending))       \(\backslash\)
            mca\_pml\_bfo\_recv\_request\_process\_pending();         \(\backslash\)
        if(\hyperlink{opal__list_8h_aec770d8385a74a16b713bd0f8028e531}{opal\_list\_get\_size}(&mca\_pml\_bfo.send\_pending))       \(\backslash\)
            mca\_pml\_bfo\_send\_request\_process\_pending(bml\_btl);  \(\backslash\)
        if(\hyperlink{opal__list_8h_aec770d8385a74a16b713bd0f8028e531}{opal\_list\_get\_size}(&mca\_pml\_bfo.rdma\_pending))       \(\backslash\)
            mca\_pml\_bfo\_process\_pending\_rdma();                 \(\backslash\)
    \} \textcolor{keywordflow}{while} (0)
\end{DoxyCode}


\subsection{Function Documentation}
\hypertarget{pml__bfo_8h_a31e6ba3662790f672383eaa8a57eb654}{\index{pml\+\_\+bfo.\+h@{pml\+\_\+bfo.\+h}!mca\+\_\+pml\+\_\+bfo\+\_\+enable@{mca\+\_\+pml\+\_\+bfo\+\_\+enable}}
\index{mca\+\_\+pml\+\_\+bfo\+\_\+enable@{mca\+\_\+pml\+\_\+bfo\+\_\+enable}!pml\+\_\+bfo.\+h@{pml\+\_\+bfo.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+bfo\+\_\+enable}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+pml\+\_\+bfo\+\_\+enable (
\begin{DoxyParamCaption}
\item[{bool}]{enable}
\end{DoxyParamCaption}
)}}\label{pml__bfo_8h_a31e6ba3662790f672383eaa8a57eb654}
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__bfo_8h_a3fa0821a8f477cf55f0dab0b2e2b6ff4}{\index{pml\+\_\+bfo.\+h@{pml\+\_\+bfo.\+h}!mca\+\_\+pml\+\_\+bfo\+\_\+send\+\_\+fin@{mca\+\_\+pml\+\_\+bfo\+\_\+send\+\_\+fin}}
\index{mca\+\_\+pml\+\_\+bfo\+\_\+send\+\_\+fin@{mca\+\_\+pml\+\_\+bfo\+\_\+send\+\_\+fin}!pml\+\_\+bfo.\+h@{pml\+\_\+bfo.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+bfo\+\_\+send\+\_\+fin}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+pml\+\_\+bfo\+\_\+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__bfo_8h_a3fa0821a8f477cf55f0dab0b2e2b6ff4}


\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\+\_\+bfo\+\_\+fin\+\_\+hdr\+\_\+t\+::hdr\+\_\+common, mca\+\_\+pml\+\_\+bfo\+\_\+fin\+\_\+hdr\+\_\+t\+::hdr\+\_\+des, mca\+\_\+pml\+\_\+bfo\+\_\+fin\+\_\+hdr\+\_\+t\+::hdr\+\_\+fail, mca\+\_\+pml\+\_\+bfo\+\_\+common\+\_\+hdr\+\_\+t\+::hdr\+\_\+flags, mca\+\_\+pml\+\_\+bfo\+\_\+common\+\_\+hdr\+\_\+t\+::hdr\+\_\+type, and mca\+\_\+btl\+\_\+base\+\_\+segment\+\_\+t\+::seg\+\_\+addr.



Referenced by mca\+\_\+pml\+\_\+bfo\+\_\+repost\+\_\+fin().

\hypertarget{pml__bfo_8h_acbc601de431e253b858ca6214e8fb809}{\index{pml\+\_\+bfo.\+h@{pml\+\_\+bfo.\+h}!mca\+\_\+pml\+\_\+bfo\+\_\+start@{mca\+\_\+pml\+\_\+bfo\+\_\+start}}
\index{mca\+\_\+pml\+\_\+bfo\+\_\+start@{mca\+\_\+pml\+\_\+bfo\+\_\+start}!pml\+\_\+bfo.\+h@{pml\+\_\+bfo.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+bfo\+\_\+start}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+pml\+\_\+bfo\+\_\+start (
\begin{DoxyParamCaption}
\item[{size\+\_\+t}]{count, }
\item[{{\bf ompi\+\_\+request\+\_\+t} $\ast$$\ast$}]{requests}
\end{DoxyParamCaption}
)}}\label{pml__bfo_8h_acbc601de431e253b858ca6214e8fb809}
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.

