+/** @file snapshot-interface.h
+ * @brief C++ layer on top of snapshotting system.
+ */
+
+
#ifndef __SNAPINTERFACE_H
#define __SNAPINTERFACE_H
-#include "snapshot.h"
#include "mymemory.h"
-#include <vector>
-#include <utility>
-#include <string>
-#include <map>
-#include <set>
-#include "snapshot.h"
-#include "libthreads.h"
-class snapshotStack;
-typedef std::basic_string<char, std::char_traits<char>, MyAlloc<char> > MyString;
+typedef unsigned int snapshot_id;
-void SnapshotGlobalSegments();
+typedef void (*VoidFuncPtr)();
+void initSnapshotLibrary(unsigned int numbackingpages,
+ unsigned int numsnapshots, unsigned int nummemoryregions,
+ unsigned int numheappages, VoidFuncPtr entryPoint);
struct stackEntry {
struct stackEntry *next;
int index;
};
-class snapshotStack {
+class SnapshotStack {
public:
MEMALLOC
- snapshotStack( );
- ~snapshotStack();
+ SnapshotStack( );
+ ~SnapshotStack();
int backTrackBeforeStep(int seq_index);
void snapshotStep(int seq_index);
- private:
+ private:
struct stackEntry * stack;
};
/* Not sure what it even means to have more than one snapshot object,
so let's just make a global reference to it.*/
-extern snapshotStack * snapshotObject;
+extern SnapshotStack * snapshotObject;
#endif