fix page alignment issue...
authorBrian Demsky <bdemsky@uci.edu>
Thu, 24 May 2012 18:40:14 +0000 (11:40 -0700)
committerBrian Demsky <bdemsky@uci.edu>
Thu, 24 May 2012 18:40:14 +0000 (11:40 -0700)
mymemory.cc
mymemory.h
snapshot.cc

index 9d598af..a825bb9 100644 (file)
@@ -52,6 +52,8 @@ void MYFREE(void *ptr) {
 #endif
 }
 mspace mySpace = NULL;
+void * basemySpace = NULL;
+
 void *malloc( size_t size ) {
        return mspace_malloc( mySpace, size );
 }
index afaffa4..90b2784 100644 (file)
@@ -122,6 +122,7 @@ extern void mspace_free(mspace msp, void* mem);
 extern mspace create_mspace_with_base(void* base, size_t capacity, int locked);
 extern mspace create_mspace(size_t capacity, int locked);
 extern mspace mySpace;
+extern void * basemySpace;
 #ifdef __cplusplus
 };  /* end of extern "C" */
 #endif
index f5cefe6..83d22b4 100644 (file)
@@ -137,8 +137,11 @@ void initSnapShotLibrary(unsigned int numbackingpages, unsigned int numsnapshots
                exit(-1);
        }
        initSnapShotRecord(numbackingpages, numsnapshots, nummemoryregions);
-       mySpace = create_mspace( numheappages*PAGESIZE, 1 );
-       addMemoryRegionToSnapShot(mySpace, numheappages);
+       
+       basemySpace=MYMALLOC((numheappages+1)*PAGESIZE);
+       void * pagealignedbase=(void *)((((uintptr_t)basemySpace)+PAGESIZE-1)&~(PAGESIZE-1));
+       mySpace = create_mspace_with_base(pagealignedbase,  numheappages*PAGESIZE, 1 );
+       addMemoryRegionToSnapShot(pagealignedbase, numheappages);
        entryPoint();
 #else
        //add a signal to indicate that the process is going to terminate.