\hypertarget{pml__base__recvreq_8h}{\section{ompi/mca/pml/base/pml\+\_\+base\+\_\+recvreq.h File Reference}
\label{pml__base__recvreq_8h}\index{ompi/mca/pml/base/pml\+\_\+base\+\_\+recvreq.\+h@{ompi/mca/pml/base/pml\+\_\+base\+\_\+recvreq.\+h}}
}
{\ttfamily \#include \char`\"{}ompi\+\_\+config.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/mca/pml/base/pml\+\_\+base\+\_\+request.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/datatype/opal\+\_\+convertor.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/peruse/peruse-\/internal.\+h\char`\"{}}\\*
\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structmca__pml__base__recv__request__t}{mca\+\_\+pml\+\_\+base\+\_\+recv\+\_\+request\+\_\+t}
\begin{DoxyCompactList}\small\item\em Base type for receive requests. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \hyperlink{pml__base__recvreq_8h_a1b06fc879d79899969d2ddebbe603cc4}{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+R\+E\+C\+V\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+I\+N\+I\+T}(\hyperlink{structrequest}{request},addr,count,datatype,src,tag,comm,persistent)
\begin{DoxyCompactList}\small\item\em Initialize a receive request with call parameters. \end{DoxyCompactList}\item 
\#define {\bfseries M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+R\+E\+C\+V\+\_\+\+S\+T\+A\+R\+T}(\hyperlink{structrequest}{request})
\item 
\#define \hyperlink{pml__base__recvreq_8h_a915806aede2d23cecafa3a9e6049964a}{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+R\+E\+C\+V\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+F\+I\+N\+I}(\hyperlink{structrequest}{request})
\begin{DoxyCompactList}\small\item\em Return a receive request. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\hypertarget{pml__base__recvreq_8h_a7ee5ad6d50475059a7487c464ee71427}{typedef struct \\*
\hyperlink{structmca__pml__base__recv__request__t}{mca\+\_\+pml\+\_\+base\+\_\+recv\+\_\+request\+\_\+t} {\bfseries mca\+\_\+pml\+\_\+base\+\_\+recv\+\_\+request\+\_\+t}}\label{pml__base__recvreq_8h_a7ee5ad6d50475059a7487c464ee71427}

\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{pml__base__recvreq_8h_a1fcae5ab74288a6435fd48730b287420}{O\+M\+P\+I\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C {\bfseries O\+B\+J\+\_\+\+C\+L\+A\+S\+S\+\_\+\+D\+E\+C\+L\+A\+R\+A\+T\+I\+O\+N} (\hyperlink{structmca__pml__base__recv__request__t}{mca\+\_\+pml\+\_\+base\+\_\+recv\+\_\+request\+\_\+t})}\label{pml__base__recvreq_8h_a1fcae5ab74288a6435fd48730b287420}

\end{DoxyCompactItemize}


\subsection{Macro Definition Documentation}
\hypertarget{pml__base__recvreq_8h_a915806aede2d23cecafa3a9e6049964a}{\index{pml\+\_\+base\+\_\+recvreq.\+h@{pml\+\_\+base\+\_\+recvreq.\+h}!M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+R\+E\+C\+V\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+F\+I\+N\+I@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+R\+E\+C\+V\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+F\+I\+N\+I}}
\index{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+R\+E\+C\+V\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+F\+I\+N\+I@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+R\+E\+C\+V\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+F\+I\+N\+I}!pml\+\_\+base\+\_\+recvreq.\+h@{pml\+\_\+base\+\_\+recvreq.\+h}}
\subsubsection[{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+R\+E\+C\+V\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+F\+I\+N\+I}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+R\+E\+C\+V\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+F\+I\+N\+I(
\begin{DoxyParamCaption}
\item[{}]{{\bf request}}
\end{DoxyParamCaption}
)}}\label{pml__base__recvreq_8h_a915806aede2d23cecafa3a9e6049964a}
{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{do} \{                                                                \hyperlink{request_2request_8h_ade5d7606b0737ca0d02fff7d5c171bb5}{\(\backslash\)}
\hyperlink{request_2request_8h_ade5d7606b0737ca0d02fff7d5c171bb5}{        OMPI\_REQUEST\_FINI}(&(\hyperlink{structrequest}{request})->req\_base.req\_ompi);               
      \hyperlink{opal__object_8h_abc1e3a4a6f319e31f74659a2f073891a}{\(\backslash\)}
\hyperlink{opal__object_8h_abc1e3a4a6f319e31f74659a2f073891a}{        OBJ\_RELEASE}( (\hyperlink{structrequest}{request})->req\_base.req\_comm);                     
      \hyperlink{opal__object_8h_abc1e3a4a6f319e31f74659a2f073891a}{\(\backslash\)}
\hyperlink{opal__object_8h_abc1e3a4a6f319e31f74659a2f073891a}{        OBJ\_RELEASE}( (\hyperlink{structrequest}{request})->req\_base.req\_datatype );                \(\backslash\)
        opal\_convertor\_cleanup( &((\hyperlink{structrequest}{request})->req\_base.req\_convertor) ); \(\backslash\)
    \} \textcolor{keywordflow}{while} (0)
\end{DoxyCode}


Return a receive request. 

Handle the release of the communicator and the attached datatype.


\begin{DoxyParams}{Parameters}
{\em request} & (I\+N) Receive request. \\
\hline
\end{DoxyParams}
\hypertarget{pml__base__recvreq_8h_a1b06fc879d79899969d2ddebbe603cc4}{\index{pml\+\_\+base\+\_\+recvreq.\+h@{pml\+\_\+base\+\_\+recvreq.\+h}!M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+R\+E\+C\+V\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+I\+N\+I\+T@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+R\+E\+C\+V\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+I\+N\+I\+T}}
\index{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+R\+E\+C\+V\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+I\+N\+I\+T@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+R\+E\+C\+V\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+I\+N\+I\+T}!pml\+\_\+base\+\_\+recvreq.\+h@{pml\+\_\+base\+\_\+recvreq.\+h}}
\subsubsection[{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+R\+E\+C\+V\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+I\+N\+I\+T}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+R\+E\+C\+V\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+I\+N\+I\+T(
\begin{DoxyParamCaption}
\item[{}]{{\bf request}, }
\item[{}]{addr, }
\item[{}]{count, }
\item[{}]{datatype, }
\item[{}]{src, }
\item[{}]{tag, }
\item[{}]{comm, }
\item[{}]{persistent}
\end{DoxyParamCaption}
)}}\label{pml__base__recvreq_8h_a1b06fc879d79899969d2ddebbe603cc4}
{\bfseries Value\+:}
\begin{DoxyCode}
\{                                                                        \(\backslash\)
    \textcolor{comment}{/* increment reference count on communicator */}                      \hyperlink{opal__object_8h_a67f8f5772cbe2caccc9b38fb435dfaf2}{\(\backslash\)}
\hyperlink{opal__object_8h_a67f8f5772cbe2caccc9b38fb435dfaf2}{    OBJ\_RETAIN}(comm);                                                    
      \hyperlink{opal__object_8h_a67f8f5772cbe2caccc9b38fb435dfaf2}{\(\backslash\)}
\hyperlink{opal__object_8h_a67f8f5772cbe2caccc9b38fb435dfaf2}{    OBJ\_RETAIN}(datatype);                                                
      \hyperlink{request_2request_8h_aaf2bebb9625f7398fb2b8bbb761d7dd6}{\(\backslash\)}
\hyperlink{request_2request_8h_aaf2bebb9625f7398fb2b8bbb761d7dd6}{                                                                         \(\backslash\)}
\hyperlink{request_2request_8h_aaf2bebb9625f7398fb2b8bbb761d7dd6}{    OMPI\_REQUEST\_INIT}(&(\hyperlink{structrequest}{request})->req\_base.req\_ompi, persistent);        \(\backslash\)
    (\hyperlink{structrequest}{request})->req\_base.req\_ompi.req\_mpi\_object.comm = comm;             \(\backslash\)
    (\hyperlink{structrequest}{request})->req\_base.req\_ompi.req\_peer = src;                         \(\backslash\)
    (\hyperlink{structrequest}{request})->req\_base.req\_ompi.req\_tag = tag;                          \(\backslash\)
    (\hyperlink{structrequest}{request})->req\_bytes\_packed = 0;                                     \(\backslash\)
    (\hyperlink{structrequest}{request})->req\_base.req\_addr = addr;                                 \(\backslash\)
    (\hyperlink{structrequest}{request})->req\_base.req\_count = count;                               \(\backslash\)
    (\hyperlink{structrequest}{request})->req\_base.req\_peer = src;                                  \(\backslash\)
    (\hyperlink{structrequest}{request})->req\_base.req\_tag = tag;                                   \(\backslash\)
    (\hyperlink{structrequest}{request})->req\_base.req\_comm = comm;                                 \(\backslash\)
    (\hyperlink{structrequest}{request})->req\_base.req\_proc = NULL;                                 \(\backslash\)
    (\hyperlink{structrequest}{request})->req\_base.req\_sequence = 0;                                \(\backslash\)
    (\hyperlink{structrequest}{request})->req\_base.req\_datatype = datatype;                         \(\backslash\)
    \textcolor{comment}{/* What about req\_type ? */}                                          \(\backslash\)
    (\hyperlink{structrequest}{request})->req\_base.req\_pml\_complete = OPAL\_INT\_TO\_BOOL(persistent); \(\backslash\)
    (\hyperlink{structrequest}{request})->req\_base.req\_free\_called = \textcolor{keyword}{false};                         \(\backslash\)
\}
\end{DoxyCode}


Initialize a receive request with call parameters. 


\begin{DoxyParams}{Parameters}
{\em request} & (I\+N) Receive request. \\
\hline
{\em addr} & (I\+N) User buffer. \\
\hline
{\em count} & (I\+N) Number of elements of indicated datatype. \\
\hline
{\em datatype} & (I\+N) User defined datatype. \\
\hline
{\em src} & (I\+N) Source rank w/in the communicator. \\
\hline
{\em tag} & (I\+N) User defined tag. \\
\hline
{\em comm} & (I\+N) Communicator. \\
\hline
{\em persistent} & (I\+N) Is this a persistent request. \\
\hline
\end{DoxyParams}
\hypertarget{pml__base__recvreq_8h_a845a104a210bc1b76a59b5241b1b779e}{\index{pml\+\_\+base\+\_\+recvreq.\+h@{pml\+\_\+base\+\_\+recvreq.\+h}!M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+R\+E\+C\+V\+\_\+\+S\+T\+A\+R\+T@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+R\+E\+C\+V\+\_\+\+S\+T\+A\+R\+T}}
\index{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+R\+E\+C\+V\+\_\+\+S\+T\+A\+R\+T@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+R\+E\+C\+V\+\_\+\+S\+T\+A\+R\+T}!pml\+\_\+base\+\_\+recvreq.\+h@{pml\+\_\+base\+\_\+recvreq.\+h}}
\subsubsection[{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+R\+E\+C\+V\+\_\+\+S\+T\+A\+R\+T}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+R\+E\+C\+V\+\_\+\+S\+T\+A\+R\+T(
\begin{DoxyParamCaption}
\item[{}]{{\bf request}}
\end{DoxyParamCaption}
)}}\label{pml__base__recvreq_8h_a845a104a210bc1b76a59b5241b1b779e}
{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{do} \{                                                                        \(\backslash\)
        (\hyperlink{structrequest}{request})->req\_pml\_complete = \textcolor{keyword}{false};                                    \(\backslash\)
                                                                                \(\backslash\)
        \textcolor{comment}{/* always set the req\_status.MPI\_TAG to ANY\_TAG before starting the     \(\backslash\)}
\textcolor{comment}{         * request. This field is used if cancelled to find out if the request  \(\backslash\)}
\textcolor{comment}{         * has been matched or not.                                             \(\backslash\)}
\textcolor{comment}{         */}                                                                     \(\backslash\)
        (\hyperlink{structrequest}{request})->req\_ompi.req\_status.MPI\_SOURCE = OMPI\_ANY\_SOURCE;            \(\backslash\)
        (\hyperlink{structrequest}{request})->req\_ompi.req\_status.MPI\_TAG = OMPI\_ANY\_TAG;                  \(\backslash\)
        (\hyperlink{structrequest}{request})->req\_ompi.req\_status.MPI\_ERROR = OMPI\_SUCCESS;                \(\backslash\)
        (\hyperlink{structrequest}{request})->req\_ompi.req\_status.\_ucount = 0;                             \(\backslash\)
        (\hyperlink{structrequest}{request})->req\_ompi.req\_status.\_cancelled = 0;                          \(\backslash\)
        (\hyperlink{structrequest}{request})->req\_ompi.req\_mpi\_object.comm     = (\hyperlink{structrequest}{request})->req\_comm;      \(\backslash\)
        (\hyperlink{structrequest}{request})->req\_ompi.req\_peer = (\hyperlink{structrequest}{request})->req\_peer;                     \(\backslash\)
                                                                                \(\backslash\)
        (\hyperlink{structrequest}{request})->req\_ompi.req\_complete = \textcolor{keyword}{false};                               \(\backslash\)
        (\hyperlink{structrequest}{request})->req\_ompi.req\_state = OMPI\_REQUEST\_ACTIVE;                    \(\backslash\)
    \} \textcolor{keywordflow}{while} (0)
\end{DoxyCode}
