mymemory/snapshot: rearrange snapshot implementation
[model-checker.git] / snapshot.cc
index 5cb920b1d156427c077b5c68ab942163fe926dc9..e6b38b58ff2fbd148f30695aff830a27a5810112 100644 (file)
@@ -112,7 +112,7 @@ static void HandlePF(int sig, siginfo_t *si, void *unused)
 #endif /* USE_MPROTECT_SNAPSHOT */
 
 #if !USE_MPROTECT_SNAPSHOT
-void createSharedMemory()
+static void createSharedMemory()
 {
        //step 1. create shared memory.
        void *memMapBase = mmap(0, SHARED_MEMORY_DEFAULT + STACK_SIZE_DEFAULT, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0);
@@ -127,6 +127,19 @@ void createSharedMemory()
        snapshotrecord->mIDToRollback = -1;
        snapshotrecord->currSnapShotID = 0;
 }
+
+/**
+ * Create a new mspace pointer for the non-snapshotting (i.e., inter-process
+ * shared) memory region. Only for fork-based snapshotting.
+ *
+ * @return The shared memory mspace
+ */
+mspace create_shared_mspace()
+{
+       if (!snapshotrecord)
+               createSharedMemory();
+       return create_mspace_with_base((void *)(snapshotrecord->mSharedMemoryBase), SHARED_MEMORY_DEFAULT - sizeof(struct SnapShot), 1);
+}
 #endif