X-Git-Url: http://plrg.eecs.uci.edu/git/?p=c11tester.git;a=blobdiff_plain;f=snapshot-interface.h;h=9912a1b78f2beba07c08b624b483c71492fd9e3a;hp=0c2478ee67abb38b817106a876899803fa458771;hb=bad8cc4598438f8b8d9e8fa210e2790f92c9ec44;hpb=700898cdd309acb86dcd275d8b1c34e02d67922e diff --git a/snapshot-interface.h b/snapshot-interface.h index 0c2478ee..9912a1b7 100644 --- a/snapshot-interface.h +++ b/snapshot-interface.h @@ -1,12 +1,39 @@ +/** @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 -#include -#include -typedef std::basic_string< char, std::char_traits< char >, MyAlloc< char > > MyString; -namespace snapshot_utils{ - std::vector< std::pair< void *, size_t >, MyAlloc< std::pair< void *, size_t > > > ReturnGlobalSegmentsToSnapshot(); + +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; +}; + +/* 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