mymemory/snapshot: rearrange snapshot implementation
authorBrian Norris <banorris@uci.edu>
Thu, 3 Jan 2013 01:38:19 +0000 (17:38 -0800)
committerBrian Norris <banorris@uci.edu>
Thu, 3 Jan 2013 03:12:03 +0000 (19:12 -0800)
Move some implementation details back to snapshot.cc.

mymemory.cc
snapshot.cc
snapshot.h

index a15a13dd522bf54bb0b7e3c7fd49ff014467db56..5c11d473a34d5420c6b1a01e109f9f619355058f 100644 (file)
@@ -38,10 +38,8 @@ void *model_calloc(size_t count, size_t size)
        ptr = callocp(count, size);
        return ptr;
 #else
-       if (!snapshotrecord)
-               createSharedMemory();
        if (!sStaticSpace)
-               sStaticSpace = create_mspace_with_base((void *)(snapshotrecord->mSharedMemoryBase), SHARED_MEMORY_DEFAULT - sizeof(struct SnapShot), 1);
+               sStaticSpace = create_shared_mspace();
        return mspace_calloc(sStaticSpace, count, size);
 #endif
 }
@@ -65,10 +63,8 @@ void *model_malloc(size_t size)
        ptr = mallocp(size);
        return ptr;
 #else
-       if (!snapshotrecord)
-               createSharedMemory();
        if (!sStaticSpace)
-               sStaticSpace = create_mspace_with_base((void *)(snapshotrecord->mSharedMemoryBase), SHARED_MEMORY_DEFAULT - sizeof(struct SnapShot), 1);
+               sStaticSpace = create_shared_mspace();
        return mspace_malloc(sStaticSpace, size);
 #endif
 }
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
 
 
index 76d63acfb00d7e994a4e4ab8ac2452f5a12d5617..8d37934b81be0504caa7ed7f8b93df4addc24c23 100644 (file)
@@ -7,13 +7,14 @@
 
 #include "snapshot-interface.h"
 #include "config.h"
+#include "mymemory.h"
 
 void addMemoryRegionToSnapShot(void *ptr, unsigned int numPages);
 snapshot_id takeSnapshot();
 void rollBack(snapshot_id theSnapShot);
 
 #if !USE_MPROTECT_SNAPSHOT
-void createSharedMemory();
+mspace create_shared_mspace();
 #endif
 
 #endif