* @brief Snapshotting implementation header file..
*/
-#ifndef _SNAPSHOTIMP_H
-#define _SNAPSHOTIMP_H
+#ifndef __SNAPSHOTIMP_H__
+#define __SNAPSHOTIMP_H__
+
+#include <stddef.h>
+
#include "snapshot.h"
-#include <iostream>
-#include <inttypes.h>
-#include <fcntl.h>
-#include <sys/mman.h>
-#include <sys/types.h>
-#include <csignal>
-#define SHARED_MEMORY_DEFAULT (100 * ((size_t)1 << 20)) // 100mb for the shared memory
+
+#define SHARED_MEMORY_DEFAULT (100 * ((size_t)1 << 20)) // 100mb for the shared memory
#define STACK_SIZE_DEFAULT (((size_t)1 << 20) * 20) // 20 mb out of the above 100 mb for my stack
#if USE_MPROTECT_SNAPSHOT
unsigned int maxSnapShots; //Stores the total number of snapshots we allow
};
-//Global reference to snapshot data structure
-extern struct SnapShot * snapshotrecord;
#else
-struct Snapshot {
+
+#include <ucontext.h>
+
+struct SnapShot {
void *mSharedMemoryBase;
void *mStackBase;
size_t mStackSize;
- snapshot_id mIDToRollback;
+ volatile snapshot_id mIDToRollback;
ucontext_t mContextToRollback;
snapshot_id currSnapShotID;
};
-extern struct Snapshot * sTheRecord;
-#endif
#endif
+
+//Global reference to snapshot data structure
+extern struct SnapShot * snapshotrecord;
+
+#endif /* __SNAPSHOTIMP_H__ */