\hypertarget{crs_8h}{\section{opal/mca/crs/crs.h File Reference}
\label{crs_8h}\index{opal/mca/crs/crs.\+h@{opal/mca/crs/crs.\+h}}
}


Checkpoint and Restart Service (C\+R\+S) Interface.  


{\ttfamily \#include \char`\"{}opal\+\_\+config.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/mca/mca.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/mca/base/base.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/class/opal\+\_\+object.\+h\char`\"{}}\\*
\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structopal__crs__base__ckpt__options__1__0__0__t}{opal\+\_\+crs\+\_\+base\+\_\+ckpt\+\_\+options\+\_\+1\+\_\+0\+\_\+0\+\_\+t}
\item 
struct \hyperlink{structopal__crs__base__snapshot__1__0__0__t}{opal\+\_\+crs\+\_\+base\+\_\+snapshot\+\_\+1\+\_\+0\+\_\+0\+\_\+t}
\begin{DoxyCompactList}\small\item\em Structure for Single process snapshot Each component is assumed to have extened this definition in the same way they exten the opal\+\_\+crs\+\_\+base\+\_\+compoinent\+\_\+t below. \end{DoxyCompactList}\item 
struct \hyperlink{structopal__crs__base__component__2__0__0__t}{opal\+\_\+crs\+\_\+base\+\_\+component\+\_\+2\+\_\+0\+\_\+0\+\_\+t}
\begin{DoxyCompactList}\small\item\em Structure for C\+R\+S components. \end{DoxyCompactList}\item 
struct \hyperlink{structopal__crs__base__module__1__0__0__t}{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+1\+\_\+0\+\_\+0\+\_\+t}
\begin{DoxyCompactList}\small\item\em Structure for C\+R\+S modules. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \hyperlink{crs_8h_ab935110175af8e6e00676faf08d3cc5e}{O\+P\+A\+L\+\_\+\+C\+R\+S\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+0}
\begin{DoxyCompactList}\small\item\em Macro for use in components that are of type C\+R\+S. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\hypertarget{crs_8h_a08a7912420658b88cf36ef86fbd61626}{typedef enum \hyperlink{crs_8h_a6795dcb136bb94368d58720ba93f9ef7}{opal\+\_\+crs\+\_\+state\+\_\+type\+\_\+t} {\bfseries opal\+\_\+crs\+\_\+state\+\_\+type\+\_\+t}}\label{crs_8h_a08a7912420658b88cf36ef86fbd61626}

\item 
\hypertarget{crs_8h_a39355b9ac6783fb5cb0a9d97cb72c7e1}{typedef struct \\*
\hyperlink{structopal__crs__base__ckpt__options__1__0__0__t}{opal\+\_\+crs\+\_\+base\+\_\+ckpt\+\_\+options\+\_\+1\+\_\+0\+\_\+0\+\_\+t} {\bfseries opal\+\_\+crs\+\_\+base\+\_\+ckpt\+\_\+options\+\_\+1\+\_\+0\+\_\+0\+\_\+t}}\label{crs_8h_a39355b9ac6783fb5cb0a9d97cb72c7e1}

\item 
\hypertarget{crs_8h_a906bcbb29a5e35340d6db6f7d6f564f5}{typedef struct \\*
\hyperlink{structopal__crs__base__ckpt__options__1__0__0__t}{opal\+\_\+crs\+\_\+base\+\_\+ckpt\+\_\+options\+\_\+1\+\_\+0\+\_\+0\+\_\+t} {\bfseries opal\+\_\+crs\+\_\+base\+\_\+ckpt\+\_\+options\+\_\+t}}\label{crs_8h_a906bcbb29a5e35340d6db6f7d6f564f5}

\item 
\hypertarget{crs_8h_ac7fd6c98c4c3d4c379cf8e7bd2a21335}{typedef struct \\*
\hyperlink{structopal__crs__base__snapshot__1__0__0__t}{opal\+\_\+crs\+\_\+base\+\_\+snapshot\+\_\+1\+\_\+0\+\_\+0\+\_\+t} {\bfseries opal\+\_\+crs\+\_\+base\+\_\+snapshot\+\_\+1\+\_\+0\+\_\+0\+\_\+t}}\label{crs_8h_ac7fd6c98c4c3d4c379cf8e7bd2a21335}

\item 
\hypertarget{crs_8h_ac421f46b4be444487cebf17f208396e9}{typedef struct \\*
\hyperlink{structopal__crs__base__snapshot__1__0__0__t}{opal\+\_\+crs\+\_\+base\+\_\+snapshot\+\_\+1\+\_\+0\+\_\+0\+\_\+t} {\bfseries opal\+\_\+crs\+\_\+base\+\_\+snapshot\+\_\+t}}\label{crs_8h_ac421f46b4be444487cebf17f208396e9}

\item 
typedef int($\ast$ \hyperlink{crs_8h_af3a6d7409c672ecc0d82fe1488dcd00a}{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+init\+\_\+fn\+\_\+t} )(void)
\begin{DoxyCompactList}\small\item\em Module initialization function. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{crs_8h_a94ebe3a37fa3fd0d9ae53ba02777653a}{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t} )(void)
\begin{DoxyCompactList}\small\item\em Module finalization function. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{crs_8h_acecfeaa6cd625d4174ea923cd4503c96}{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+checkpoint\+\_\+fn\+\_\+t} )(pid\+\_\+t pid, \hyperlink{structopal__crs__base__snapshot__1__0__0__t}{opal\+\_\+crs\+\_\+base\+\_\+snapshot\+\_\+t} $\ast$snapshot, \hyperlink{structopal__crs__base__ckpt__options__1__0__0__t}{opal\+\_\+crs\+\_\+base\+\_\+ckpt\+\_\+options\+\_\+t} $\ast$options, \hyperlink{crs_8h_a6795dcb136bb94368d58720ba93f9ef7}{opal\+\_\+crs\+\_\+state\+\_\+type\+\_\+t} $\ast$state)
\begin{DoxyCompactList}\small\item\em Call the underlying checkpointer. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{crs_8h_a72d947174e5da846d4322eb1cd31e1f8}{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+restart\+\_\+fn\+\_\+t} )(\hyperlink{structopal__crs__base__snapshot__1__0__0__t}{opal\+\_\+crs\+\_\+base\+\_\+snapshot\+\_\+t} $\ast$snapshot, bool spawn\+\_\+child, pid\+\_\+t $\ast$child\+\_\+pid)
\begin{DoxyCompactList}\small\item\em Call the underlying restart command for this process Returns O\+P\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S or O\+P\+A\+L\+\_\+\+C\+R\+S\+\_\+\+E\+R\+R\+O\+R. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{crs_8h_a55293aa21a2c3a124bc2145fd497acf0}{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+disable\+\_\+checkpoint\+\_\+fn\+\_\+t} )(void)
\begin{DoxyCompactList}\small\item\em Disable the checkpointer Returns O\+P\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S or O\+P\+A\+L\+\_\+\+C\+R\+S\+\_\+\+E\+R\+R\+O\+R. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{crs_8h_ae8a6b2068ffa07a8f480559e8d047e11}{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+enable\+\_\+checkpoint\+\_\+fn\+\_\+t} )(void)
\begin{DoxyCompactList}\small\item\em Enable the checkpointer Returns O\+P\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S or O\+P\+A\+L\+\_\+\+C\+R\+S\+\_\+\+E\+R\+R\+O\+R. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{crs_8h_a8605160d391db1a18fa59d14f47b7729}{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+prelaunch\+\_\+fn\+\_\+t} )(int32\+\_\+t rank, char $\ast$base\+\_\+snapshot\+\_\+dir, char $\ast$$\ast$app, char $\ast$$\ast$cwd, char $\ast$$\ast$$\ast$argv, char $\ast$$\ast$$\ast$env)
\begin{DoxyCompactList}\small\item\em Prepare the C\+R\+S component for process launch. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{crs_8h_ae5954f09c433bd6ce272ffccdb1b17d3}{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+reg\+\_\+thread\+\_\+fn\+\_\+t} )(void)
\begin{DoxyCompactList}\small\item\em Register another thread that may call this library. \end{DoxyCompactList}\item 
\hypertarget{crs_8h_af995a9f500a31875c50885ae0952a5a0}{typedef struct \\*
\hyperlink{structopal__crs__base__component__2__0__0__t}{opal\+\_\+crs\+\_\+base\+\_\+component\+\_\+2\+\_\+0\+\_\+0\+\_\+t} {\bfseries opal\+\_\+crs\+\_\+base\+\_\+component\+\_\+2\+\_\+0\+\_\+0\+\_\+t}}\label{crs_8h_af995a9f500a31875c50885ae0952a5a0}

\item 
\hypertarget{crs_8h_a228bfa82ece6b4ba12986211d8d2c403}{typedef struct \\*
\hyperlink{structopal__crs__base__component__2__0__0__t}{opal\+\_\+crs\+\_\+base\+\_\+component\+\_\+2\+\_\+0\+\_\+0\+\_\+t} {\bfseries opal\+\_\+crs\+\_\+base\+\_\+component\+\_\+t}}\label{crs_8h_a228bfa82ece6b4ba12986211d8d2c403}

\item 
\hypertarget{crs_8h_a2b563065ee939c154be9c11aae6dbc45}{typedef struct \\*
\hyperlink{structopal__crs__base__module__1__0__0__t}{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+1\+\_\+0\+\_\+0\+\_\+t} {\bfseries opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+1\+\_\+0\+\_\+0\+\_\+t}}\label{crs_8h_a2b563065ee939c154be9c11aae6dbc45}

\item 
\hypertarget{crs_8h_ae0f88180ec29ed639ba0bc964e4f1007}{typedef struct \\*
\hyperlink{structopal__crs__base__module__1__0__0__t}{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+1\+\_\+0\+\_\+0\+\_\+t} {\bfseries opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+t}}\label{crs_8h_ae0f88180ec29ed639ba0bc964e4f1007}

\end{DoxyCompactItemize}
\subsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
\hypertarget{crs_8h_a6795dcb136bb94368d58720ba93f9ef7}{enum \hyperlink{crs_8h_a6795dcb136bb94368d58720ba93f9ef7}{opal\+\_\+crs\+\_\+state\+\_\+type\+\_\+t} \{ \\*
{\bfseries O\+P\+A\+L\+\_\+\+C\+R\+S\+\_\+\+N\+O\+N\+E} = 0, 
{\bfseries O\+P\+A\+L\+\_\+\+C\+R\+S\+\_\+\+C\+H\+E\+C\+K\+P\+O\+I\+N\+T} = 1, 
{\bfseries O\+P\+A\+L\+\_\+\+C\+R\+S\+\_\+\+R\+E\+S\+T\+A\+R\+T\+\_\+\+P\+R\+E} = 2, 
{\bfseries O\+P\+A\+L\+\_\+\+C\+R\+S\+\_\+\+R\+E\+S\+T\+A\+R\+T} = 3, 
\\*
{\bfseries O\+P\+A\+L\+\_\+\+C\+R\+S\+\_\+\+C\+O\+N\+T\+I\+N\+U\+E} = 4, 
{\bfseries O\+P\+A\+L\+\_\+\+C\+R\+S\+\_\+\+T\+E\+R\+M} = 5, 
{\bfseries O\+P\+A\+L\+\_\+\+C\+R\+S\+\_\+\+R\+U\+N\+N\+I\+N\+G} = 6, 
{\bfseries O\+P\+A\+L\+\_\+\+C\+R\+S\+\_\+\+E\+R\+R\+O\+R} = 7, 
\\*
{\bfseries O\+P\+A\+L\+\_\+\+C\+R\+S\+\_\+\+S\+T\+A\+T\+E\+\_\+\+M\+A\+X} = 8
 \}}\label{crs_8h_a6795dcb136bb94368d58720ba93f9ef7}

\begin{DoxyCompactList}\small\item\em States of the module. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{crs_8h_a48a63cd238f17614666f8fa381a6765e}{O\+P\+A\+L\+\_\+\+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{structopal__crs__base__ckpt__options__1__0__0__t}{opal\+\_\+crs\+\_\+base\+\_\+ckpt\+\_\+options\+\_\+t})}\label{crs_8h_a48a63cd238f17614666f8fa381a6765e}

\item 
\hypertarget{crs_8h_a2520614095befb6fb35f6c6b858271dc}{O\+P\+A\+L\+\_\+\+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{structopal__crs__base__snapshot__1__0__0__t}{opal\+\_\+crs\+\_\+base\+\_\+snapshot\+\_\+t})}\label{crs_8h_a2520614095befb6fb35f6c6b858271dc}

\end{DoxyCompactItemize}
\subsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\hypertarget{crs_8h_a1e933ebb2f381427231c3521f94a01d1}{O\+P\+A\+L\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C \\*
\hyperlink{structopal__crs__base__module__1__0__0__t}{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+t} {\bfseries opal\+\_\+crs}}\label{crs_8h_a1e933ebb2f381427231c3521f94a01d1}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
Checkpoint and Restart Service (C\+R\+S) Interface. 

General Description\+:

The O\+P\+A\+L Checkpoint and Restart Service (C\+R\+S) has been created to create an abstract notion of a single process checkpointer for upper levels to incorporate checkpoint/restart calls genericly into their code. This keeps the upper levels from becoming too tied to a specfic checkpoint and restart implementation.

This interface will change in the future to allow for some additional specialized functionality such as memory inclusion/exclusion, explicit restarting while running, and others.

Words to the Wise\+:

The C\+R\+S module must adhere to the A\+P\+I exactly inorder to be fully supported. How the module goes about conforming to the A\+P\+I is an internal module issue and in no cases should the module impose restrictions upon the upper layers as this is an A\+P\+I violation. 

\subsection{Macro Definition Documentation}
\hypertarget{crs_8h_ab935110175af8e6e00676faf08d3cc5e}{\index{crs.\+h@{crs.\+h}!O\+P\+A\+L\+\_\+\+C\+R\+S\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+0@{O\+P\+A\+L\+\_\+\+C\+R\+S\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+0}}
\index{O\+P\+A\+L\+\_\+\+C\+R\+S\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+0@{O\+P\+A\+L\+\_\+\+C\+R\+S\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+0}!crs.\+h@{crs.\+h}}
\subsubsection[{O\+P\+A\+L\+\_\+\+C\+R\+S\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+0}]{\setlength{\rightskip}{0pt plus 5cm}\#define O\+P\+A\+L\+\_\+\+C\+R\+S\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+0}}\label{crs_8h_ab935110175af8e6e00676faf08d3cc5e}
{\bfseries Value\+:}
\begin{DoxyCode}
MCA\_BASE\_VERSION\_2\_0\_0, \(\backslash\)
    \textcolor{stringliteral}{"crs"}, 2, 0, 0
\end{DoxyCode}


Macro for use in components that are of type C\+R\+S. 



\subsection{Typedef Documentation}
\hypertarget{crs_8h_acecfeaa6cd625d4174ea923cd4503c96}{\index{crs.\+h@{crs.\+h}!opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+checkpoint\+\_\+fn\+\_\+t@{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+checkpoint\+\_\+fn\+\_\+t}}
\index{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+checkpoint\+\_\+fn\+\_\+t@{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+checkpoint\+\_\+fn\+\_\+t}!crs.\+h@{crs.\+h}}
\subsubsection[{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+checkpoint\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+checkpoint\+\_\+fn\+\_\+t)(pid\+\_\+t pid, {\bf opal\+\_\+crs\+\_\+base\+\_\+snapshot\+\_\+t} $\ast$snapshot, {\bf opal\+\_\+crs\+\_\+base\+\_\+ckpt\+\_\+options\+\_\+t} $\ast$options, {\bf opal\+\_\+crs\+\_\+state\+\_\+type\+\_\+t} $\ast$state)}}\label{crs_8h_acecfeaa6cd625d4174ea923cd4503c96}


Call the underlying checkpointer. 

Returns O\+P\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S upon success, and O\+P\+A\+L\+\_\+\+E\+R\+R\+O\+R otherwise.

Arguments\+: pid = P\+I\+D of the process to checkpoint, or 0 if checkpointing self. fname = the filename where the checkpoint has been written. state = The state at which the checkpoint is exiting
\begin{DoxyItemize}
\item O\+P\+A\+L\+\_\+\+C\+R\+S\+\_\+\+C\+O\+N\+T\+I\+N\+U\+E Continuing after a checkpoint has been taken
\item O\+P\+A\+L\+\_\+\+C\+R\+S\+\_\+\+R\+E\+S\+T\+A\+R\+T Restarting from a checkpoint
\item O\+P\+A\+L\+\_\+\+C\+R\+S\+\_\+\+E\+R\+R\+O\+R Checkpoint was not successful.
\end{DoxyItemize}

The 'fname' string is owned by the caller\+: if appropriate, it must be eventually freed by the caller. \hypertarget{crs_8h_a55293aa21a2c3a124bc2145fd497acf0}{\index{crs.\+h@{crs.\+h}!opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+disable\+\_\+checkpoint\+\_\+fn\+\_\+t@{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+disable\+\_\+checkpoint\+\_\+fn\+\_\+t}}
\index{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+disable\+\_\+checkpoint\+\_\+fn\+\_\+t@{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+disable\+\_\+checkpoint\+\_\+fn\+\_\+t}!crs.\+h@{crs.\+h}}
\subsubsection[{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+disable\+\_\+checkpoint\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+disable\+\_\+checkpoint\+\_\+fn\+\_\+t)(void)}}\label{crs_8h_a55293aa21a2c3a124bc2145fd497acf0}


Disable the checkpointer Returns O\+P\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S or O\+P\+A\+L\+\_\+\+C\+R\+S\+\_\+\+E\+R\+R\+O\+R. 

This should set a flag/mutex to disallow checkpoints to occur. If a checkpoint were to occur while checkpoints are disabled, they should block until reenabled. A quality module implementation would notify the user that the checkpoint has been delayed until the program is out of this critical section of code. \hypertarget{crs_8h_ae8a6b2068ffa07a8f480559e8d047e11}{\index{crs.\+h@{crs.\+h}!opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+enable\+\_\+checkpoint\+\_\+fn\+\_\+t@{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+enable\+\_\+checkpoint\+\_\+fn\+\_\+t}}
\index{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+enable\+\_\+checkpoint\+\_\+fn\+\_\+t@{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+enable\+\_\+checkpoint\+\_\+fn\+\_\+t}!crs.\+h@{crs.\+h}}
\subsubsection[{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+enable\+\_\+checkpoint\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+enable\+\_\+checkpoint\+\_\+fn\+\_\+t)(void)}}\label{crs_8h_ae8a6b2068ffa07a8f480559e8d047e11}


Enable the checkpointer Returns O\+P\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S or O\+P\+A\+L\+\_\+\+C\+R\+S\+\_\+\+E\+R\+R\+O\+R. 

This should set a flag/mutex to allow checkpoints to occur \hypertarget{crs_8h_a94ebe3a37fa3fd0d9ae53ba02777653a}{\index{crs.\+h@{crs.\+h}!opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t@{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t}}
\index{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t@{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t}!crs.\+h@{crs.\+h}}
\subsubsection[{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t)(void)}}\label{crs_8h_a94ebe3a37fa3fd0d9ae53ba02777653a}


Module finalization function. 

Returns O\+P\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S \hypertarget{crs_8h_af3a6d7409c672ecc0d82fe1488dcd00a}{\index{crs.\+h@{crs.\+h}!opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+init\+\_\+fn\+\_\+t@{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+init\+\_\+fn\+\_\+t}}
\index{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+init\+\_\+fn\+\_\+t@{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+init\+\_\+fn\+\_\+t}!crs.\+h@{crs.\+h}}
\subsubsection[{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+init\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+init\+\_\+fn\+\_\+t)(void)}}\label{crs_8h_af3a6d7409c672ecc0d82fe1488dcd00a}


Module initialization function. 

Returns O\+P\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S \hypertarget{crs_8h_a8605160d391db1a18fa59d14f47b7729}{\index{crs.\+h@{crs.\+h}!opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+prelaunch\+\_\+fn\+\_\+t@{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+prelaunch\+\_\+fn\+\_\+t}}
\index{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+prelaunch\+\_\+fn\+\_\+t@{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+prelaunch\+\_\+fn\+\_\+t}!crs.\+h@{crs.\+h}}
\subsubsection[{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+prelaunch\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+prelaunch\+\_\+fn\+\_\+t)(int32\+\_\+t rank, char $\ast$base\+\_\+snapshot\+\_\+dir, char $\ast$$\ast$app, char $\ast$$\ast$cwd, char $\ast$$\ast$$\ast$argv, char $\ast$$\ast$$\ast$env)}}\label{crs_8h_a8605160d391db1a18fa59d14f47b7729}


Prepare the C\+R\+S component for process launch. 

Some C\+R\+S components need to take action before the process is ever launched to do such things as\+:
\begin{DoxyItemize}
\item seed the process environment
\item L\+D\+\_\+\+P\+R\+E\+L\+O\+A\+D
\item Analyze the binary before launch
\end{DoxyItemize}


\begin{DoxyParams}{Parameters}
{\em rank} & Rank of the process to be started \\
\hline
{\em app} & Absolute pathname of argv\mbox{[}0\mbox{]} \\
\hline
{\em argv} & Standard argv-\/style array, including a final N\+U\+L\+L pointer \\
\hline
{\em env} & Standard environ-\/style array, including a final N\+U\+L\+L pointer \\
\hline
\end{DoxyParams}
\hypertarget{crs_8h_ae5954f09c433bd6ce272ffccdb1b17d3}{\index{crs.\+h@{crs.\+h}!opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+reg\+\_\+thread\+\_\+fn\+\_\+t@{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+reg\+\_\+thread\+\_\+fn\+\_\+t}}
\index{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+reg\+\_\+thread\+\_\+fn\+\_\+t@{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+reg\+\_\+thread\+\_\+fn\+\_\+t}!crs.\+h@{crs.\+h}}
\subsubsection[{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+reg\+\_\+thread\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+reg\+\_\+thread\+\_\+fn\+\_\+t)(void)}}\label{crs_8h_ae5954f09c433bd6ce272ffccdb1b17d3}


Register another thread that may call this library. 

Some C\+R systems require that each thread that will call into their library register individually before doing so.

Returns O\+P\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S or O\+P\+A\+L\+\_\+\+E\+R\+R\+O\+R \hypertarget{crs_8h_a72d947174e5da846d4322eb1cd31e1f8}{\index{crs.\+h@{crs.\+h}!opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+restart\+\_\+fn\+\_\+t@{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+restart\+\_\+fn\+\_\+t}}
\index{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+restart\+\_\+fn\+\_\+t@{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+restart\+\_\+fn\+\_\+t}!crs.\+h@{crs.\+h}}
\subsubsection[{opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+restart\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ opal\+\_\+crs\+\_\+base\+\_\+module\+\_\+restart\+\_\+fn\+\_\+t)({\bf opal\+\_\+crs\+\_\+base\+\_\+snapshot\+\_\+t} $\ast$snapshot, bool spawn\+\_\+child, pid\+\_\+t $\ast$child\+\_\+pid)}}\label{crs_8h_a72d947174e5da846d4322eb1cd31e1f8}


Call the underlying restart command for this process Returns O\+P\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S or O\+P\+A\+L\+\_\+\+C\+R\+S\+\_\+\+E\+R\+R\+O\+R. 

Arguments\+: fname = Checkpoint filename spawn\+\_\+child = true if the restarted process should be forked as a new process, in which case 'child\+\_\+pid' will be returned. false if the restarted process should overwrite the current process space. child\+\_\+pid = P\+I\+D of the child that was started, if applicable 