-/** @file snapshot-interface.h
- * @brief C++ layer on top of snapshotting system.
+/**
+ * @file snapshot-interface.h
+ * @brief C interface layer on top of snapshotting system
*/
-
#ifndef __SNAPINTERFACE_H
#define __SNAPINTERFACE_H
-#include "mymemory.h"
+#include <ucontext.h>
typedef unsigned int snapshot_id;
-
typedef void (*VoidFuncPtr)();
-void initSnapShotLibrary(unsigned int numbackingpages,
- unsigned int numsnapshots, unsigned int nummemoryregions,
- unsigned int numheappages, VoidFuncPtr entryPoint);
-
-struct stackEntry {
- struct stackEntry *next;
- snapshot_id snapshotid;
- int index;
-};
-
-class SnapshotStack {
- public:
- MEMALLOC
- SnapshotStack( );
- ~SnapshotStack();
- int backTrackBeforeStep(int seq_index);
- void snapshotStep(int seq_index);
- private:
- struct stackEntry * stack;
-};
+void snapshot_system_init(unsigned int numbackingpages,
+ unsigned int numsnapshots, unsigned int nummemoryregions,
+ unsigned int numheappages);
+void startExecution(ucontext_t * context, VoidFuncPtr entryPoint);
+snapshot_id take_snapshot();
+void snapshot_roll_back(snapshot_id theSnapShot);
-/* 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;
#endif