static ucontext_t savedSnapshotContext;
static ucontext_t savedUserSnapshotContext;
static snapshot_id snapshotid = 0;
-#endif
+
+#else /* USE_MPROTECT_SNAPSHOT */
/** PageAlignedAdressUpdate return a page aligned address for the
* address being added as a side effect the numBytes are also changed.
return (void *)((((uintptr_t)addr)+PAGESIZE-1)&~(PAGESIZE-1));
}
-#if USE_MPROTECT_SNAPSHOT
-
/** ReturnPageAlignedAddress returns a page aligned address for the
* address being added as a side effect the numBytes are also changed.
*/
// Handle error by quitting?
}
}
-#endif //nothing to handle for non snapshotting case.
+#endif /* USE_MPROTECT_SNAPSHOT */
#if !USE_MPROTECT_SNAPSHOT
void createSharedMemory(){
#endif
-/** The initSnapShotLibrary function initializes the Snapshot library.
+/** The initSnapshotLibrary function initializes the snapshot library.
* @param entryPoint the function that should run the program.
*/
#if USE_MPROTECT_SNAPSHOT
-void initSnapShotLibrary(unsigned int numbackingpages,
+void initSnapshotLibrary(unsigned int numbackingpages,
unsigned int numsnapshots, unsigned int nummemoryregions,
unsigned int numheappages, VoidFuncPtr entryPoint) {
/* Setup a stack for our signal handler.... */
HandlePF(SIGSEGV, &si, NULL);
snapshotrecord->lastBackingPage--; //remove the fake page we copied
- basemySpace=model_malloc((numheappages+1)*PAGESIZE);
+ void *basemySpace = model_malloc((numheappages+1)*PAGESIZE);
void * pagealignedbase=PageAlignAddressUpward(basemySpace);
- mySpace = create_mspace_with_base(pagealignedbase, numheappages*PAGESIZE, 1 );
+ user_snapshot_space = create_mspace_with_base(pagealignedbase, numheappages * PAGESIZE, 1);
addMemoryRegionToSnapShot(pagealignedbase, numheappages);
entryPoint();
}
#else
-void initSnapShotLibrary(unsigned int numbackingpages,
+void initSnapshotLibrary(unsigned int numbackingpages,
unsigned int numsnapshots, unsigned int nummemoryregions,
unsigned int numheappages, VoidFuncPtr entryPoint) {
- basemySpace=system_malloc((numheappages+1)*PAGESIZE);
- void * pagealignedbase=PageAlignAddressUpward(basemySpace);
- mySpace = create_mspace_with_base(pagealignedbase, numheappages*PAGESIZE, 1 );
if (!snapshotrecord)
createSharedMemory();
* @param theID is the snapshot identifier to rollback to.
*/
void rollBack( snapshot_id theID ){
-#if USE_MPOTECT_SNAPSHOT==2
+#if USE_MPROTECT_SNAPSHOT==2
if (snapshotrecord->lastSnapShot==(theID+1)) {
for(unsigned int page=snapshotrecord->snapShots[theID].firstBackingPage; page<snapshotrecord->lastBackingPage; page++) {
memcpy(snapshotrecord->backingRecords[page].basePtrOfPage, &snapshotrecord->backingStore[page], sizeof(struct SnapShotPage));