#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);
+
struct sigaction sa;
- sa.sa_flags = SA_SIGINFO | SA_NODEFER | SA_RESTART;
+ sa.sa_flags = SA_SIGINFO | SA_NODEFER | SA_RESTART | SA_ONSTACK;
sigemptyset( &sa.sa_mask );
sa.sa_sigaction = HandlePF;
if( sigaction( SIGSEGV, &sa, NULL ) == -1 ){
#define _SNAPSHOT_H
#define PAGESIZE 4096
#define USE_CHECKPOINTING 1
+/* Size of signal stack */
+#define SIGSTACKSIZE 16384
typedef unsigned int snapshot_id;