Merge branch 'master' of ssh://demsky.eecs.uci.edu/home/git/model-checker
[model-checker.git] / snapshot-interface.h
1 #ifndef __SNAPINTERFACE_H
2 #define __SNAPINTERFACE_H
3 #include "mymemory.h"
4
5 typedef unsigned int snapshot_id;
6
7 typedef void (*VoidFuncPtr)();
8 void initSnapShotLibrary(unsigned int numbackingpages,
9                 unsigned int numsnapshots, unsigned int nummemoryregions,
10                 unsigned int numheappages, VoidFuncPtr entryPoint);
11
12 void SnapshotGlobalSegments();
13
14 struct stackEntry {
15   struct stackEntry *next;
16   snapshot_id snapshotid;
17   int index;
18 };
19
20 class SnapshotStack {
21  public:
22   MEMALLOC
23   SnapshotStack( );
24   ~SnapshotStack();
25   int backTrackBeforeStep(int seq_index);
26   void snapshotStep(int seq_index);
27
28  private: 
29   struct stackEntry * stack;
30 };
31
32 /* Not sure what it even means to have more than one snapshot object,
33    so let's just make a global reference to it.*/
34
35 extern SnapshotStack * snapshotObject;
36 #endif