00001
00002 #include "traceCore.h"
00003 #include "traceCoreAPI.h"
00004 #include "traceCoreCommon.h"
00005 #include "charmProjections.h"
00006
00007 #include "converse.h"
00008
00009
00010
00011 #define TRACE_CORE_BUFFER_SIZE 10
00012
00013
00014 extern "C" {
00015 CpvDeclare(int, _traceCoreOn);
00016 }
00017 CpvDeclare(double, _traceCoreInitTime);
00018 CpvDeclare(char*, _traceCoreRoot);
00019 CpvDeclare(int, _traceCoreBufferSize);
00020 CpvDeclare(TraceCore*, _traceCore);
00021
00022
00023 #define TRACE_CORE_TIMER CmiWallTimer
00024 inline double TraceCoreTimer() { return TRACE_CORE_TIMER() - CpvAccess(_traceCoreInitTime); }
00025
00026
00027
00028
00029
00030
00031
00032
00033 extern "C" void initTraceCore(char** argv)
00034 {
00035
00036
00037
00038 CpvInitialize(char*, _traceCoreRoot);
00039 CpvAccess(_traceCoreRoot) = (char *) malloc(strlen(argv[0])+1);
00040 _MEMCHECK(CpvAccess(_traceCoreRoot));
00041 strcpy(CpvAccess(_traceCoreRoot), argv[0]);
00042
00043 CpvInitialize(int, _traceCoreBufferSize);
00044 CpvAccess(_traceCoreBufferSize) = TRACE_CORE_BUFFER_SIZE;
00045
00046 CpvInitialize(double, _traceCoreInitTime);
00047 CpvAccess(_traceCoreInitTime) = TRACE_CORE_TIMER();
00048
00049 CpvInitialize(TraceCore*, _traceCore);
00050 CpvAccess(_traceCore) = new TraceCore(argv);
00051
00052
00053 }
00054
00055
00056
00057 extern "C" void closeTraceCore() {
00058
00059 delete CpvAccess(_traceCore);
00060 }
00061
00062
00063
00064 extern "C" void resumeTraceCore() {}
00065
00066
00067
00068 extern "C" void suspendTraceCore() {}
00069
00070
00071
00072 extern "C" void beginTraceCore(void) {}
00073
00074
00075
00076 extern "C" void endTraceCore(void) {}
00077
00078
00079
00080
00081
00082 extern "C" void RegisterLanguage(int lID, const char* ln)
00083 { LOGCONDITIONAL(CpvAccess(_traceCore)->RegisterLanguage(lID, ln)); }
00084
00085 extern "C" void RegisterEvent(int lID, int eID)
00086 { LOGCONDITIONAL(CpvAccess(_traceCore)->RegisterEvent(lID, eID)); }
00087
00088
00089
00090 extern "C" void LogEvent(int lID, int eID)
00091 { CpvAccess(_traceCore)->LogEvent(lID, eID); }
00092
00093 extern "C" void LogEvent1(int lID, int eID, int iLen, const int* iData)
00094 { CpvAccess(_traceCore)->LogEvent(lID, eID, iLen, iData); }
00095
00096 extern "C" void LogEvent2(int lID, int eID, int sLen, const char* sData)
00097 { CpvAccess(_traceCore)->LogEvent(lID, eID, sLen, sData); }
00098
00099 extern "C" void LogEvent3(int lID, int eID, int iLen, const int* iData, int sLen, const char* sData)
00100 { CpvAccess(_traceCore)->LogEvent(lID, eID, iLen, iData, sLen, sData); }
00101
00102 extern "C" void LogEvent4(int lID, int eID, int iLen, const int* iData, double t)
00103 { CpvAccess(_traceCore)->LogEvent(lID, eID, iLen, iData,t); }
00104