\hypertarget{snapc_8h}{\section{orte/mca/snapc/snapc.h File Reference}
\label{snapc_8h}\index{orte/mca/snapc/snapc.\+h@{orte/mca/snapc/snapc.\+h}}
}


Snapshot Coordination (S\+N\+A\+P\+C) Interface.  


{\ttfamily \#include \char`\"{}orte\+\_\+config.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}orte/constants.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}orte/types.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/mca/mca.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/mca/base/base.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/mca/crs/crs.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/mca/crs/base/base.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/class/opal\+\_\+object.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/class/opal\+\_\+pointer\+\_\+array.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/util/output.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}orte/mca/sstore/sstore.\+h\char`\"{}}\\*
\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structorte__snapc__base__local__snapshot__1__0__0__t}{orte\+\_\+snapc\+\_\+base\+\_\+local\+\_\+snapshot\+\_\+1\+\_\+0\+\_\+0\+\_\+t}
\begin{DoxyCompactList}\small\item\em Definition of a orte local snapshot. \end{DoxyCompactList}\item 
struct \hyperlink{structorte__snapc__base__global__snapshot__1__0__0__t}{orte\+\_\+snapc\+\_\+base\+\_\+global\+\_\+snapshot\+\_\+1\+\_\+0\+\_\+0\+\_\+t}
\begin{DoxyCompactList}\small\item\em Definition of the global snapshot. \end{DoxyCompactList}\item 
struct \hyperlink{structorte__snapc__base__quiesce__1__0__0__t}{orte\+\_\+snapc\+\_\+base\+\_\+quiesce\+\_\+1\+\_\+0\+\_\+0\+\_\+t}
\item 
struct \hyperlink{structorte__snapc__base__request__op__1__0__0__t}{orte\+\_\+snapc\+\_\+base\+\_\+request\+\_\+op\+\_\+1\+\_\+0\+\_\+0\+\_\+t}
\item 
struct \hyperlink{structorte__snapc__base__component__2__0__0__t}{orte\+\_\+snapc\+\_\+base\+\_\+component\+\_\+2\+\_\+0\+\_\+0\+\_\+t}
\begin{DoxyCompactList}\small\item\em Structure for S\+N\+A\+P\+C components. \end{DoxyCompactList}\item 
struct \hyperlink{structorte__snapc__base__module__1__0__0__t}{orte\+\_\+snapc\+\_\+base\+\_\+module\+\_\+1\+\_\+0\+\_\+0\+\_\+t}
\begin{DoxyCompactList}\small\item\em Structure for S\+N\+A\+P\+C modules. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\hypertarget{snapc_8h_ae92be204df99012dff616efad2aee20e}{\#define \hyperlink{snapc_8h_ae92be204df99012dff616efad2aee20e}{O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+C\+K\+P\+T\+\_\+\+S\+T\+A\+T\+E\+\_\+\+E\+R\+R\+O\+R}~0}\label{snapc_8h_ae92be204df99012dff616efad2aee20e}

\begin{DoxyCompactList}\small\item\em States that a process can be in while checkpointing. \end{DoxyCompactList}\item 
\hypertarget{snapc_8h_a2b734b61c87d2613cb85e2d01fe9e708}{\#define {\bfseries O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+C\+K\+P\+T\+\_\+\+S\+T\+A\+T\+E\+\_\+\+N\+O\+N\+E}~1}\label{snapc_8h_a2b734b61c87d2613cb85e2d01fe9e708}

\item 
\hypertarget{snapc_8h_a2323e327a4e5c08fb8edbade65a0955e}{\#define {\bfseries O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+C\+K\+P\+T\+\_\+\+S\+T\+A\+T\+E\+\_\+\+R\+E\+Q\+U\+E\+S\+T}~2}\label{snapc_8h_a2323e327a4e5c08fb8edbade65a0955e}

\item 
\hypertarget{snapc_8h_a1e26bb66c11ba80fe77e6cce1760566e}{\#define {\bfseries O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+C\+K\+P\+T\+\_\+\+S\+T\+A\+T\+E\+\_\+\+P\+E\+N\+D\+I\+N\+G}~3}\label{snapc_8h_a1e26bb66c11ba80fe77e6cce1760566e}

\item 
\hypertarget{snapc_8h_a78925f34f302b5ab327aa53d49dc48d2}{\#define {\bfseries O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+C\+K\+P\+T\+\_\+\+S\+T\+A\+T\+E\+\_\+\+R\+U\+N\+N\+I\+N\+G}~4}\label{snapc_8h_a78925f34f302b5ab327aa53d49dc48d2}

\item 
\hypertarget{snapc_8h_af6e27654de848889af5bdde10acfcd58}{\#define {\bfseries O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+C\+K\+P\+T\+\_\+\+S\+T\+A\+T\+E\+\_\+\+I\+N\+C\+\_\+\+P\+R\+E\+P\+E\+D}~5}\label{snapc_8h_af6e27654de848889af5bdde10acfcd58}

\item 
\hypertarget{snapc_8h_aec3e07f98ba65f4fe396376b9fc9db7d}{\#define {\bfseries O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+C\+K\+P\+T\+\_\+\+S\+T\+A\+T\+E\+\_\+\+S\+T\+O\+P\+P\+E\+D}~6}\label{snapc_8h_aec3e07f98ba65f4fe396376b9fc9db7d}

\item 
\hypertarget{snapc_8h_a13e0a92dc53e4681ef3b31cebf2aafc3}{\#define {\bfseries O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+C\+K\+P\+T\+\_\+\+S\+T\+A\+T\+E\+\_\+\+F\+I\+N\+I\+S\+H\+E\+D\+\_\+\+L\+O\+C\+A\+L}~7}\label{snapc_8h_a13e0a92dc53e4681ef3b31cebf2aafc3}

\item 
\hypertarget{snapc_8h_aa272d47c794c194a9031529465c62898}{\#define {\bfseries O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+C\+K\+P\+T\+\_\+\+S\+T\+A\+T\+E\+\_\+\+M\+I\+G\+R\+A\+T\+I\+N\+G}~8}\label{snapc_8h_aa272d47c794c194a9031529465c62898}

\item 
\hypertarget{snapc_8h_aec0844dac2e46120c7c6baf79fcbea93}{\#define {\bfseries O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+C\+K\+P\+T\+\_\+\+S\+T\+A\+T\+E\+\_\+\+E\+S\+T\+A\+B\+L\+I\+S\+H\+E\+D}~9}\label{snapc_8h_aec0844dac2e46120c7c6baf79fcbea93}

\item 
\hypertarget{snapc_8h_a2659d2ae64ef233ebef3a33b712c2d02}{\#define {\bfseries O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+C\+K\+P\+T\+\_\+\+S\+T\+A\+T\+E\+\_\+\+R\+E\+C\+O\+V\+E\+R\+E\+D}~10}\label{snapc_8h_a2659d2ae64ef233ebef3a33b712c2d02}

\item 
\hypertarget{snapc_8h_ad068ab9e6b6da55fa86fba94488ad05f}{\#define {\bfseries O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+C\+K\+P\+T\+\_\+\+S\+T\+A\+T\+E\+\_\+\+N\+O\+\_\+\+C\+K\+P\+T}~11}\label{snapc_8h_ad068ab9e6b6da55fa86fba94488ad05f}

\item 
\hypertarget{snapc_8h_a322e036862078da2ae04811596f70215}{\#define {\bfseries O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+C\+K\+P\+T\+\_\+\+S\+T\+A\+T\+E\+\_\+\+N\+O\+\_\+\+R\+E\+S\+T\+A\+R\+T}~12}\label{snapc_8h_a322e036862078da2ae04811596f70215}

\item 
\hypertarget{snapc_8h_a5fc0a949952b1099e8d6031d6f1188c6}{\#define {\bfseries O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+C\+K\+P\+T\+\_\+\+M\+A\+X}~13}\label{snapc_8h_a5fc0a949952b1099e8d6031d6f1188c6}

\item 
\hypertarget{snapc_8h_a6a0a13d431bc938e26909ddc29268e75}{\#define \hyperlink{snapc_8h_a6a0a13d431bc938e26909ddc29268e75}{O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+C\+K\+P\+T\+\_\+\+S\+H\+I\+F\+T}~131072}\label{snapc_8h_a6a0a13d431bc938e26909ddc29268e75}

\begin{DoxyCompactList}\small\item\em Sufficiently high shift value to avoid colliding the process checkpointing states above with the O\+R\+T\+E process states. \end{DoxyCompactList}\item 
\hypertarget{snapc_8h_a004d68b61381837f76a8191a5d44d32e}{\#define {\bfseries O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+C\+K\+P\+T\+\_\+\+N\+O\+T\+I\+F\+Y}(state)~(\hyperlink{snapc_8h_a6a0a13d431bc938e26909ddc29268e75}{O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+C\+K\+P\+T\+\_\+\+S\+H\+I\+F\+T} + state)}\label{snapc_8h_a004d68b61381837f76a8191a5d44d32e}

\item 
\hypertarget{snapc_8h_af6d2477b681043ea71eb6c21b175f461}{\#define {\bfseries O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+C\+K\+P\+T\+\_\+\+S\+T\+A\+T\+E}(state)~(state -\/ \hyperlink{snapc_8h_a6a0a13d431bc938e26909ddc29268e75}{O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+C\+K\+P\+T\+\_\+\+S\+H\+I\+F\+T})}\label{snapc_8h_af6d2477b681043ea71eb6c21b175f461}

\item 
\hypertarget{snapc_8h_afaac1ff4de68b029113ac6ab93206cd7}{\#define {\bfseries C\+H\+E\+C\+K\+\_\+\+O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+C\+K\+P\+T\+\_\+\+S\+T\+A\+T\+E}(state)~(state $>$= \hyperlink{snapc_8h_a6a0a13d431bc938e26909ddc29268e75}{O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+C\+K\+P\+T\+\_\+\+S\+H\+I\+F\+T})}\label{snapc_8h_afaac1ff4de68b029113ac6ab93206cd7}

\item 
\#define \hyperlink{snapc_8h_abccaafaeeffd65736e3c336cdb94f6b1}{O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+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 S\+N\+A\+P\+C. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\hypertarget{snapc_8h_a0ffe40de2dcf401535a52c62afb20773}{typedef struct \\*
\hyperlink{structorte__snapc__base__local__snapshot__1__0__0__t}{orte\+\_\+snapc\+\_\+base\+\_\+local\+\_\+snapshot\+\_\+1\+\_\+0\+\_\+0\+\_\+t} {\bfseries orte\+\_\+snapc\+\_\+base\+\_\+local\+\_\+snapshot\+\_\+1\+\_\+0\+\_\+0\+\_\+t}}\label{snapc_8h_a0ffe40de2dcf401535a52c62afb20773}

\item 
\hypertarget{snapc_8h_a672f407b7f5f76f5a72539a729d02867}{typedef struct \\*
\hyperlink{structorte__snapc__base__local__snapshot__1__0__0__t}{orte\+\_\+snapc\+\_\+base\+\_\+local\+\_\+snapshot\+\_\+1\+\_\+0\+\_\+0\+\_\+t} {\bfseries orte\+\_\+snapc\+\_\+base\+\_\+local\+\_\+snapshot\+\_\+t}}\label{snapc_8h_a672f407b7f5f76f5a72539a729d02867}

\item 
\hypertarget{snapc_8h_a9cbb2811e504d869bf738edbc6e01af5}{typedef struct \\*
\hyperlink{structorte__snapc__base__global__snapshot__1__0__0__t}{orte\+\_\+snapc\+\_\+base\+\_\+global\+\_\+snapshot\+\_\+1\+\_\+0\+\_\+0\+\_\+t} {\bfseries orte\+\_\+snapc\+\_\+base\+\_\+global\+\_\+snapshot\+\_\+1\+\_\+0\+\_\+0\+\_\+t}}\label{snapc_8h_a9cbb2811e504d869bf738edbc6e01af5}

\item 
\hypertarget{snapc_8h_a297389ea46d4677d3566b8e64f117640}{typedef struct \\*
\hyperlink{structorte__snapc__base__global__snapshot__1__0__0__t}{orte\+\_\+snapc\+\_\+base\+\_\+global\+\_\+snapshot\+\_\+1\+\_\+0\+\_\+0\+\_\+t} {\bfseries orte\+\_\+snapc\+\_\+base\+\_\+global\+\_\+snapshot\+\_\+t}}\label{snapc_8h_a297389ea46d4677d3566b8e64f117640}

\item 
\hypertarget{snapc_8h_afe4e55b4c47b2710554ccfb2ef7ea729}{typedef struct \\*
\hyperlink{structorte__snapc__base__quiesce__1__0__0__t}{orte\+\_\+snapc\+\_\+base\+\_\+quiesce\+\_\+1\+\_\+0\+\_\+0\+\_\+t} {\bfseries orte\+\_\+snapc\+\_\+base\+\_\+quiesce\+\_\+1\+\_\+0\+\_\+0\+\_\+t}}\label{snapc_8h_afe4e55b4c47b2710554ccfb2ef7ea729}

\item 
\hypertarget{snapc_8h_ad98c8f1fab60c96007352e1cf37eaf4f}{typedef struct \\*
\hyperlink{structorte__snapc__base__quiesce__1__0__0__t}{orte\+\_\+snapc\+\_\+base\+\_\+quiesce\+\_\+1\+\_\+0\+\_\+0\+\_\+t} {\bfseries orte\+\_\+snapc\+\_\+base\+\_\+quiesce\+\_\+t}}\label{snapc_8h_ad98c8f1fab60c96007352e1cf37eaf4f}

\item 
\hypertarget{snapc_8h_a9e3ad3c8335c341e116b7374ce30c6f6}{typedef struct \\*
\hyperlink{structorte__snapc__base__request__op__1__0__0__t}{orte\+\_\+snapc\+\_\+base\+\_\+request\+\_\+op\+\_\+1\+\_\+0\+\_\+0\+\_\+t} {\bfseries orte\+\_\+snapc\+\_\+base\+\_\+request\+\_\+op\+\_\+1\+\_\+0\+\_\+0\+\_\+t}}\label{snapc_8h_a9e3ad3c8335c341e116b7374ce30c6f6}

\item 
\hypertarget{snapc_8h_a6319e5109a50fc912b74c07c3672b967}{typedef struct \\*
\hyperlink{structorte__snapc__base__request__op__1__0__0__t}{orte\+\_\+snapc\+\_\+base\+\_\+request\+\_\+op\+\_\+1\+\_\+0\+\_\+0\+\_\+t} {\bfseries orte\+\_\+snapc\+\_\+base\+\_\+request\+\_\+op\+\_\+t}}\label{snapc_8h_a6319e5109a50fc912b74c07c3672b967}

\item 
typedef int($\ast$ \hyperlink{snapc_8h_a8b58aeb0285923331ce540c5a0ac4097}{orte\+\_\+snapc\+\_\+base\+\_\+module\+\_\+init\+\_\+fn\+\_\+t} )(bool seed, bool app)
\begin{DoxyCompactList}\small\item\em Module initialization function. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{snapc_8h_a77738700c063e0eff6d01aec97fb6c15}{orte\+\_\+snapc\+\_\+base\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t} )(void)
\begin{DoxyCompactList}\small\item\em Module finalization function. \end{DoxyCompactList}\item 
\hypertarget{snapc_8h_a99fc6f2fd128de74851c10cb82f3b9e7}{typedef int($\ast$ \hyperlink{snapc_8h_a99fc6f2fd128de74851c10cb82f3b9e7}{orte\+\_\+snapc\+\_\+base\+\_\+setup\+\_\+job\+\_\+fn\+\_\+t} )(\hyperlink{orte_2include_2orte_2types_8h_addefe647f31eee13c7f756f0d959a99b}{orte\+\_\+jobid\+\_\+t} jobid)}\label{snapc_8h_a99fc6f2fd128de74851c10cb82f3b9e7}

\begin{DoxyCompactList}\small\item\em Setup the necessary structures for this job Returns O\+R\+T\+E\+\_\+\+S\+U\+C\+C\+E\+S\+S. \end{DoxyCompactList}\item 
\hypertarget{snapc_8h_af321657b6cd3059a6fa023a81a1980e6}{typedef int($\ast$ \hyperlink{snapc_8h_af321657b6cd3059a6fa023a81a1980e6}{orte\+\_\+snapc\+\_\+base\+\_\+release\+\_\+job\+\_\+fn\+\_\+t} )(\hyperlink{orte_2include_2orte_2types_8h_addefe647f31eee13c7f756f0d959a99b}{orte\+\_\+jobid\+\_\+t} jobid)}\label{snapc_8h_af321657b6cd3059a6fa023a81a1980e6}

\begin{DoxyCompactList}\small\item\em Setup the necessary structures for this job Returns O\+R\+T\+E\+\_\+\+S\+U\+C\+C\+E\+S\+S. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{snapc_8h_a558a755da4c3c4de0a4c5e0020413798}{orte\+\_\+snapc\+\_\+base\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t} )(int state)
\begin{DoxyCompactList}\small\item\em Handle fault tolerance updates. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{snapc_8h_ae50b9c6647acb186fff17a2d72d54679}{orte\+\_\+snapc\+\_\+base\+\_\+start\+\_\+checkpoint\+\_\+fn\+\_\+t} )(\hyperlink{structorte__snapc__base__quiesce__1__0__0__t}{orte\+\_\+snapc\+\_\+base\+\_\+quiesce\+\_\+t} $\ast$datum)
\begin{DoxyCompactList}\small\item\em Start a checkpoint originating from an internal source. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{snapc_8h_aa1b0a5687afee7f4494df3a566e2b8fb}{orte\+\_\+snapc\+\_\+base\+\_\+end\+\_\+checkpoint\+\_\+fn\+\_\+t} )(\hyperlink{structorte__snapc__base__quiesce__1__0__0__t}{orte\+\_\+snapc\+\_\+base\+\_\+quiesce\+\_\+t} $\ast$datum)
\begin{DoxyCompactList}\small\item\em Signal end of checkpoint epoch originating from an internal source. \end{DoxyCompactList}\item 
\hypertarget{snapc_8h_af66a4b7452759fb17cf3c9c42dca4ab6}{typedef int($\ast$ \hyperlink{snapc_8h_af66a4b7452759fb17cf3c9c42dca4ab6}{orte\+\_\+snapc\+\_\+base\+\_\+request\+\_\+op\+\_\+fn\+\_\+t} )(\hyperlink{structorte__snapc__base__request__op__1__0__0__t}{orte\+\_\+snapc\+\_\+base\+\_\+request\+\_\+op\+\_\+t} $\ast$datum)}\label{snapc_8h_af66a4b7452759fb17cf3c9c42dca4ab6}

\begin{DoxyCompactList}\small\item\em \hyperlink{classRequest}{Request} a checkpoint related operation to take place. \end{DoxyCompactList}\item 
\hypertarget{snapc_8h_a1547718f35f47f91f98c87e1d97d22d5}{typedef struct \\*
\hyperlink{structorte__snapc__base__component__2__0__0__t}{orte\+\_\+snapc\+\_\+base\+\_\+component\+\_\+2\+\_\+0\+\_\+0\+\_\+t} {\bfseries orte\+\_\+snapc\+\_\+base\+\_\+component\+\_\+2\+\_\+0\+\_\+0\+\_\+t}}\label{snapc_8h_a1547718f35f47f91f98c87e1d97d22d5}

\item 
\hypertarget{snapc_8h_a5974cf76955106b244a7463af2037b2c}{typedef struct \\*
\hyperlink{structorte__snapc__base__component__2__0__0__t}{orte\+\_\+snapc\+\_\+base\+\_\+component\+\_\+2\+\_\+0\+\_\+0\+\_\+t} {\bfseries orte\+\_\+snapc\+\_\+base\+\_\+component\+\_\+t}}\label{snapc_8h_a5974cf76955106b244a7463af2037b2c}

\item 
\hypertarget{snapc_8h_a1083ef679d0029d45534bdbabe961e14}{typedef struct \\*
\hyperlink{structorte__snapc__base__module__1__0__0__t}{orte\+\_\+snapc\+\_\+base\+\_\+module\+\_\+1\+\_\+0\+\_\+0\+\_\+t} {\bfseries orte\+\_\+snapc\+\_\+base\+\_\+module\+\_\+1\+\_\+0\+\_\+0\+\_\+t}}\label{snapc_8h_a1083ef679d0029d45534bdbabe961e14}

\item 
\hypertarget{snapc_8h_aae55d99d8191f4eb0d73751978abc160}{typedef struct \\*
\hyperlink{structorte__snapc__base__module__1__0__0__t}{orte\+\_\+snapc\+\_\+base\+\_\+module\+\_\+1\+\_\+0\+\_\+0\+\_\+t} {\bfseries orte\+\_\+snapc\+\_\+base\+\_\+module\+\_\+t}}\label{snapc_8h_aae55d99d8191f4eb0d73751978abc160}

\end{DoxyCompactItemize}
\subsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
\hypertarget{snapc_8h_a61401a1bf99b1e9e575e46516c70f47f}{enum \hyperlink{snapc_8h_a61401a1bf99b1e9e575e46516c70f47f}{orte\+\_\+snapc\+\_\+base\+\_\+request\+\_\+op\+\_\+event\+\_\+t} \{ \\*
{\bfseries O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+O\+P\+\_\+\+N\+O\+N\+E} = 0, 
{\bfseries O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+O\+P\+\_\+\+I\+N\+I\+T}, 
{\bfseries O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+O\+P\+\_\+\+F\+I\+N}, 
{\bfseries O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+O\+P\+\_\+\+F\+I\+N\+\_\+\+A\+C\+K}, 
\\*
{\bfseries O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+O\+P\+\_\+\+C\+H\+E\+C\+K\+P\+O\+I\+N\+T}, 
{\bfseries O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+O\+P\+\_\+\+R\+E\+S\+T\+A\+R\+T}, 
{\bfseries O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+O\+P\+\_\+\+M\+I\+G\+R\+A\+T\+E}, 
{\bfseries O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+O\+P\+\_\+\+Q\+U\+I\+E\+S\+C\+E\+\_\+\+S\+T\+A\+R\+T}, 
\\*
{\bfseries O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+O\+P\+\_\+\+Q\+U\+I\+E\+S\+C\+E\+\_\+\+C\+H\+E\+C\+K\+P\+O\+I\+N\+T}, 
{\bfseries O\+R\+T\+E\+\_\+\+S\+N\+A\+P\+C\+\_\+\+O\+P\+\_\+\+Q\+U\+I\+E\+S\+C\+E\+\_\+\+E\+N\+D}
 \}}\label{snapc_8h_a61401a1bf99b1e9e575e46516c70f47f}

\begin{DoxyCompactList}\small\item\em Application request for a global checkpoint related operation. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{snapc_8h_a0ce6e39532068e588623d17291a83871}{O\+R\+T\+E\+\_\+\+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{structorte__snapc__base__local__snapshot__1__0__0__t}{orte\+\_\+snapc\+\_\+base\+\_\+local\+\_\+snapshot\+\_\+t})}\label{snapc_8h_a0ce6e39532068e588623d17291a83871}

\item 
\hypertarget{snapc_8h_a0cc1efeb2480ebeb3a6b705fdd200800}{O\+R\+T\+E\+\_\+\+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{structorte__snapc__base__global__snapshot__1__0__0__t}{orte\+\_\+snapc\+\_\+base\+\_\+global\+\_\+snapshot\+\_\+t})}\label{snapc_8h_a0cc1efeb2480ebeb3a6b705fdd200800}

\item 
\hypertarget{snapc_8h_ab2282d30ba1325c31c876b2bff0b0388}{O\+R\+T\+E\+\_\+\+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{structorte__snapc__base__quiesce__1__0__0__t}{orte\+\_\+snapc\+\_\+base\+\_\+quiesce\+\_\+t})}\label{snapc_8h_ab2282d30ba1325c31c876b2bff0b0388}

\item 
\hypertarget{snapc_8h_aeb1635c20e06c32fc6c93fe6036c3b7a}{O\+R\+T\+E\+\_\+\+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{structorte__snapc__base__request__op__1__0__0__t}{orte\+\_\+snapc\+\_\+base\+\_\+request\+\_\+op\+\_\+t})}\label{snapc_8h_aeb1635c20e06c32fc6c93fe6036c3b7a}

\end{DoxyCompactItemize}
\subsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\hypertarget{snapc_8h_a93cfcbd5306765e78ecafd17238a0bb4}{O\+R\+T\+E\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C \\*
\hyperlink{structorte__snapc__base__module__1__0__0__t}{orte\+\_\+snapc\+\_\+base\+\_\+module\+\_\+t} {\bfseries orte\+\_\+snapc}}\label{snapc_8h_a93cfcbd5306765e78ecafd17238a0bb4}

\item 
\hypertarget{snapc_8h_a58d7e5bf045a153f28ed2a49739eb4f0}{O\+R\+T\+E\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C \\*
\hyperlink{structorte__snapc__base__component__2__0__0__t}{orte\+\_\+snapc\+\_\+base\+\_\+component\+\_\+t} {\bfseries orte\+\_\+snapc\+\_\+base\+\_\+selected\+\_\+component}}\label{snapc_8h_a58d7e5bf045a153f28ed2a49739eb4f0}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
Snapshot Coordination (S\+N\+A\+P\+C) Interface. 

\subsubsection*{Terminology\+: }

Global Snapshot Coordinator\+:
\begin{DoxyItemize}
\item H\+N\+P(s) coordination function. Local Snapshot Coordinator
\item V\+H\+N\+P(s) \mbox{[}e.\+g., orted\mbox{]} coordination function Application Snapshot Coordinator
\item Application level coordinaton function Local Snapshot
\item Snapshot generated by a single process in the parallel job Local Snapshot Reference
\item A generic reference to the physical Local Snapshot Global Snapshot
\item Snapshot generated for the entire parallel job Global Snapshot Reference
\item A generic reference to the physical Global Snapshot
\end{DoxyItemize}

\subsubsection*{General Description\+: }

This framework is tasked with\+:
\begin{DoxyItemize}
\item Initiating the checkpoint in the system
\item Physically moving the local snapshot files to a location Initially this location, is the node on which the Head Node \hyperlink{structProcess}{Process} (H\+N\+P) is running, but later this will be a replicated checkpoint server or the like.
\item Generating a 'global snapshot handle' that the user can use to restart the parallel job.
\end{DoxyItemize}

Each component will have 3 teirs of behavior that must behave in concert\+:
\begin{DoxyItemize}
\item Global Snapshot Coordinator This is the H\+N\+Ps tasks. Mostly distributing the notification of the checkpoint, and then compiling the physical and virtual nature of the global snapshot handle.
\item Local Snapshot Coordinator This is the V\+H\+N\+Ps (or orted, if available) tasks. This will involve working with the Global Snapshot Coordinator to route the physical and virtual 'local snapshot's from the application to the desired location. This process must also notify the Global Snapshot Coordinator when it's set of processes have completed the checkpoint.
\item Application Snapshot Coordinator This is the application level coordinator. This is very light, just a subscription to be triggered when it needs to checkpoint, and then, once finished with the checkpoint, notify the Local Snapshot Coordinator that it is complete. If there is no orted (so no bootproxy), then the application assumes the responsibility of the Local Snapshot Coordinator as well. 
\end{DoxyItemize}

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


Macro for use in components that are of type S\+N\+A\+P\+C. 



\subsection{Typedef Documentation}
\hypertarget{snapc_8h_aa1b0a5687afee7f4494df3a566e2b8fb}{\index{snapc.\+h@{snapc.\+h}!orte\+\_\+snapc\+\_\+base\+\_\+end\+\_\+checkpoint\+\_\+fn\+\_\+t@{orte\+\_\+snapc\+\_\+base\+\_\+end\+\_\+checkpoint\+\_\+fn\+\_\+t}}
\index{orte\+\_\+snapc\+\_\+base\+\_\+end\+\_\+checkpoint\+\_\+fn\+\_\+t@{orte\+\_\+snapc\+\_\+base\+\_\+end\+\_\+checkpoint\+\_\+fn\+\_\+t}!snapc.\+h@{snapc.\+h}}
\subsubsection[{orte\+\_\+snapc\+\_\+base\+\_\+end\+\_\+checkpoint\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ orte\+\_\+snapc\+\_\+base\+\_\+end\+\_\+checkpoint\+\_\+fn\+\_\+t)({\bf orte\+\_\+snapc\+\_\+base\+\_\+quiesce\+\_\+t} $\ast$datum)}}\label{snapc_8h_aa1b0a5687afee7f4494df3a566e2b8fb}


Signal end of checkpoint epoch originating from an internal source. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em epoch} & Epoch number to associate with this checkpoint operation Returns O\+R\+T\+E\+\_\+\+S\+U\+C\+C\+E\+S\+S \\
\hline
\end{DoxyParams}
\hypertarget{snapc_8h_a558a755da4c3c4de0a4c5e0020413798}{\index{snapc.\+h@{snapc.\+h}!orte\+\_\+snapc\+\_\+base\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t@{orte\+\_\+snapc\+\_\+base\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t}}
\index{orte\+\_\+snapc\+\_\+base\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t@{orte\+\_\+snapc\+\_\+base\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t}!snapc.\+h@{snapc.\+h}}
\subsubsection[{orte\+\_\+snapc\+\_\+base\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ orte\+\_\+snapc\+\_\+base\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t)(int state)}}\label{snapc_8h_a558a755da4c3c4de0a4c5e0020413798}


Handle fault tolerance updates. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em state} & Fault tolerance state update\\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em O\+R\+T\+E\+\_\+\+S\+U\+C\+C\+E\+S\+S} & The operation completed successfully \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+O\+R} & An unspecifed error occurred \\
\hline
\end{DoxyRetVals}
\hypertarget{snapc_8h_a77738700c063e0eff6d01aec97fb6c15}{\index{snapc.\+h@{snapc.\+h}!orte\+\_\+snapc\+\_\+base\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t@{orte\+\_\+snapc\+\_\+base\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t}}
\index{orte\+\_\+snapc\+\_\+base\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t@{orte\+\_\+snapc\+\_\+base\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t}!snapc.\+h@{snapc.\+h}}
\subsubsection[{orte\+\_\+snapc\+\_\+base\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ orte\+\_\+snapc\+\_\+base\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t)(void)}}\label{snapc_8h_a77738700c063e0eff6d01aec97fb6c15}


Module finalization function. 

Returns O\+R\+T\+E\+\_\+\+S\+U\+C\+C\+E\+S\+S \hypertarget{snapc_8h_a8b58aeb0285923331ce540c5a0ac4097}{\index{snapc.\+h@{snapc.\+h}!orte\+\_\+snapc\+\_\+base\+\_\+module\+\_\+init\+\_\+fn\+\_\+t@{orte\+\_\+snapc\+\_\+base\+\_\+module\+\_\+init\+\_\+fn\+\_\+t}}
\index{orte\+\_\+snapc\+\_\+base\+\_\+module\+\_\+init\+\_\+fn\+\_\+t@{orte\+\_\+snapc\+\_\+base\+\_\+module\+\_\+init\+\_\+fn\+\_\+t}!snapc.\+h@{snapc.\+h}}
\subsubsection[{orte\+\_\+snapc\+\_\+base\+\_\+module\+\_\+init\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ orte\+\_\+snapc\+\_\+base\+\_\+module\+\_\+init\+\_\+fn\+\_\+t)(bool seed, bool app)}}\label{snapc_8h_a8b58aeb0285923331ce540c5a0ac4097}


Module initialization function. 

Returns O\+R\+T\+E\+\_\+\+S\+U\+C\+C\+E\+S\+S \hypertarget{snapc_8h_ae50b9c6647acb186fff17a2d72d54679}{\index{snapc.\+h@{snapc.\+h}!orte\+\_\+snapc\+\_\+base\+\_\+start\+\_\+checkpoint\+\_\+fn\+\_\+t@{orte\+\_\+snapc\+\_\+base\+\_\+start\+\_\+checkpoint\+\_\+fn\+\_\+t}}
\index{orte\+\_\+snapc\+\_\+base\+\_\+start\+\_\+checkpoint\+\_\+fn\+\_\+t@{orte\+\_\+snapc\+\_\+base\+\_\+start\+\_\+checkpoint\+\_\+fn\+\_\+t}!snapc.\+h@{snapc.\+h}}
\subsubsection[{orte\+\_\+snapc\+\_\+base\+\_\+start\+\_\+checkpoint\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ orte\+\_\+snapc\+\_\+base\+\_\+start\+\_\+checkpoint\+\_\+fn\+\_\+t)({\bf orte\+\_\+snapc\+\_\+base\+\_\+quiesce\+\_\+t} $\ast$datum)}}\label{snapc_8h_ae50b9c6647acb186fff17a2d72d54679}


Start a checkpoint originating from an internal source. 

This really only makes sense to call from an application, but in the future we may allow the checkpoint operation to use this function from the local coordinator.


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt out}  & {\em epoch} & Epoch number to associate with this checkpoint operation Returns O\+R\+T\+E\+\_\+\+S\+U\+C\+C\+E\+S\+S \\
\hline
\end{DoxyParams}
