00001 /***************************************************************************** 00002 * $Source: /cvsroot/charm/src/ck-perf/trace-recordreplay.C,v $ 00003 * $Author: gioachin $ 00004 * $Date: 2007-09-11 21:43:01 $ 00005 * $Revision: 2.2 $ 00006 *****************************************************************************/ 00007 00012 00013 #include "charm++.h" 00014 #include "trace-recordreplay.h" 00015 #include "signal.h" 00016 00017 #define DEBUGF(x) // CmiPrintf x 00018 00019 #define VER 4.0 00020 00021 #define INVALIDEP -2 00022 00023 CkpvStaticDeclare(TraceRecordReplay*, _trace); 00024 00029 void _createTracerecordreplay(char **argv) 00030 { 00031 DEBUGF(("%d createTraceRecordReplay\n", CkMyPe())); 00032 CkpvInitialize(TraceRecordReplay*, _trace); 00033 CkpvAccess(_trace) = new TraceRecordReplay(argv); 00034 CkpvAccess(_traces)->addTrace(CkpvAccess(_trace)); 00035 } 00036 00037 typedef void (*sigfunc)(int); 00038 CkpvStaticDeclare(sigfunc, segfault_sig); 00039 00040 void segfault_signal(int sig) { 00041 printf("Segfault handler reached!\n"); 00042 signal(SIGSEGV, CkpvAccess(segfault_sig)); 00043 } 00044 00045 TraceRecordReplay::TraceRecordReplay(char **argv):curevent(1) 00046 { 00047 //CkpvAccess(segfault_sig) = signal(SIGSEGV, segfault_signal); 00048 } 00049 00050 void TraceRecordReplay::beginExecute(envelope *e) 00051 { 00052 // no message means thread execution 00053 if (e==NULL) { 00054 } 00055 else { 00056 e->setEvent(curevent++); 00057 } 00058 } 00059 00060 00061 void TraceRecordReplay::creation(envelope *e, int ep, int num) 00062 { 00063 e->setEvent(curevent++); 00064 } 00065 00066
1.5.1