From 421c3af5d7265b26a4c946a710f2acd986c5d78a Mon Sep 17 00:00:00 2001 From: Brian Norris Date: Wed, 2 Jan 2013 17:38:19 -0800 Subject: [PATCH] mymemory/snapshot: rearrange snapshot implementation Move some implementation details back to snapshot.cc. --- mymemory.cc | 8 ++------ snapshot.cc | 15 ++++++++++++++- snapshot.h | 3 ++- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/mymemory.cc b/mymemory.cc index a15a13d..5c11d47 100644 --- a/mymemory.cc +++ b/mymemory.cc @@ -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 } diff --git a/snapshot.cc b/snapshot.cc index 5cb920b..e6b38b5 100644 --- a/snapshot.cc +++ b/snapshot.cc @@ -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 diff --git a/snapshot.h b/snapshot.h index 76d63ac..8d37934 100644 --- a/snapshot.h +++ b/snapshot.h @@ -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 -- 2.34.1