00001
00002
00003
00004
00005 #include<charm++.h>
00006 #include<charm-api.h>
00007
00008 CpvStaticDeclare(int, a);
00009
00010 static int isInitialized=0;
00011
00012 static void checkInit(void) {
00013 if (isInitialized) return;
00014 isInitialized=1;
00015 CpvInitialize(int,a);
00016 CpvAccess(a)=0;
00017 }
00018
00019 static char * FortrantoCString(char *x,int len){
00020 char *newstr = new char[len + 1];
00021 _MEMCHECK(newstr);
00022 strncpy(newstr, x, len);
00023 newstr[len] = 0;
00024 return newstr;
00025 }
00026
00027
00028 FLINKAGE {
00029
00030 #define ftracebegin FTN_NAME(FTRACEBEGIN, ftracebegin)
00031 #define ftraceend FTN_NAME(FTRACEEND, ftraceend)
00032 #define ftraceregisteruserevent FTN_NAME(FTRACEREGISTERUSEREVENT, ftraceregisteruserevent)
00033 #define ftraceuserbracketevent FTN_NAME(FTRACEUSERBRACKETEVENT, ftraceuserbracketevent)
00034 #define ftraceUserEvent FTN_NAME(FTRACEUSEREVENT, ftraceuserevent)
00035 #define ftraceFlushLog FTN_NAME(FTRACEFLUSHLOG, ftraceflushlog)
00036
00037 #define fbgprintf FTN_NAME(FBGPRINTF, fbgprintf)
00038
00039 void ftracebegin()
00040 {
00041 checkInit();
00042 if ( CpvAccess(a) ==0)
00043 {
00044 traceBegin();
00045 CpvAccess(a)++;
00046 }
00047 else
00048 { CpvAccess(a)++;}
00049 }
00050
00051 void ftraceend()
00052 {
00053 checkInit();
00054 if ( CpvAccess(a) == 1)
00055 {
00056 traceEnd();
00057 CpvAccess(a)--;
00058 }
00059 else
00060 { CpvAccess(a)--;}
00061
00062 }
00063
00064 void ftraceregisteruserevent(char *x, int *ein, int *eout, int len)
00065 {
00066 char *newstr = new char[len + 1];
00067 _MEMCHECK(newstr);
00068 strncpy(newstr, x, len);
00069 newstr[len] = 0;
00070 int newe = traceRegisterUserEvent(newstr, *ein);
00071 *eout = newe;
00072 }
00073
00074 void ftraceuserbracketevent(int *e, double *begint, double *endt)
00075 {
00076 traceUserBracketEvent(*e, *begint, *endt);
00077 }
00078
00079 void ftraceUserEvent(int *e)
00080 {
00081 traceUserEvent(*e);
00082 }
00083
00084 void ftraceFlushLog()
00085 {
00086 traceFlushLog();
00087 }
00088
00089 #if CMK_BIGSIM_CHARM
00090 void fbgprintf(char *str, int len)
00091 {
00092 char *newstr = new char[len + 1];
00093 _MEMCHECK(newstr);
00094 strncpy(newstr, str, len);
00095 newstr[len] = 0;
00096 BgPrintf(newstr);
00097 delete [] newstr;
00098 }
00099 #endif
00100
00101 }
00102