#include <signal.h>
#include <stdlib.h>
#include <map>
-#include <set>
#include <cstring>
#include <cstdio>
#include "snapshot.h"
#include <errno.h>
#include <sys/wait.h>
#include <ucontext.h>
-#include <sys/time.h>
+
//extern declaration definition
#define FAILURE(mesg) { printf("failed in the API: %s with errno relative message: %s\n", mesg, strerror( errno ) ); exit( -1 ); }
#if USE_CHECKPOINTING
#else
struct Snapshot_t * sTheRecord = NULL;
#endif
-void BeginOperation( struct timeval * theStartTime ){
-#if 1
- gettimeofday( theStartTime, NULL );
-#endif
-}
-#if SSDEBUG
-struct timeval *starttime = NULL;
-#endif
void DumpIntoLog( const char * filename, const char * message ){
#if SSDEBUG
static pid_t thePID = getpid();
char newFn[ 1024 ] ={ 0 };
sprintf( newFn,"%s-%d.txt", filename, thePID );
FILE * myFile = fopen( newFn, "w+" );
- struct timeval theEndTime;
- BeginOperation( &theEndTime );
- double elapsed = ( theEndTime.tv_sec - starttime->tv_sec ) + ( theEndTime.tv_usec - starttime->tv_usec ) / 1000000.0;
- fprintf( myFile, "The timestamp %f:--> the message %s: the process id %d\n", elapsed, message, thePID );
+ fprintf( myFile, "the message %s: the process id %d\n", message, thePID );
fflush( myFile );
fclose( myFile );
myFile = NULL;
#if !USE_CHECKPOINTING
static ucontext_t savedSnapshotContext;
static ucontext_t savedUserSnapshotContext;
-static int snapshotid = 0;
+static snapshot_id snapshotid = 0;
#endif
/* Initialize snapshot data structure */
#if USE_CHECKPOINTING
void HandlePF( int sig, siginfo_t *si, void * unused){
#if USE_CHECKPOINTING
if( si->si_code == SEGV_MAPERR ){
- printf("Real Fault at %llx\n", ( long long )si->si_addr);
+ printf("Real Fault at %p\n", si->si_addr);
exit( EXIT_FAILURE );
}
void* addr = ReturnPageAlignedAddress(si->si_addr);
unsigned int backingpage=snapshotrecord->lastBackingPage++; //Could run out of pages...
if (backingpage==snapshotrecord->maxBackingPages) {
- printf("Out of backing pages at %llx\n", ( long long )si->si_addr);
+ printf("Out of backing pages at %p\n", si->si_addr);
exit( EXIT_FAILURE );
}
#endif
void initSnapShotLibrary(unsigned int numbackingpages, unsigned int numsnapshots, unsigned int nummemoryregions, unsigned int numheappages, MyFuncPtr entryPoint){
#if USE_CHECKPOINTING
- /* Setup a stack for our signal handler.... */
- stack_t ss;
- ss.ss_sp = MYMALLOC(SIGSTACKSIZE);
- ss.ss_size = SIGSTACKSIZE;
- ss.ss_flags = 0;
- sigaltstack(&ss, NULL);
+ /* Setup a stack for our signal handler.... */
+ stack_t ss;
+ ss.ss_sp = MYMALLOC(SIGSTACKSIZE);
+ ss.ss_size = SIGSTACKSIZE;
+ ss.ss_flags = 0;
+ sigaltstack(&ss, NULL);
struct sigaction sa;
sa.sa_flags = SA_SIGINFO | SA_NODEFER | SA_RESTART | SA_ONSTACK;
exit(-1);
}
createSharedLibrary();
-#if SSDEBUG
- starttime = &(sTheRecord->startTimeGlobal);
- gettimeofday( starttime, NULL );
-#endif
+
//step 2 setup the stack context.
int alreadySwapped = 0;