projector files
authorArun Singla <asingla@uiuc.edu>
Fri, 26 Apr 2002 21:53:53 +0000 (21:53 +0000)
committerArun Singla <asingla@uiuc.edu>
Fri, 26 Apr 2002 21:53:53 +0000 (21:53 +0000)
src/conv-perf/charmEvents.h
src/conv-perf/charmProjections.C
src/conv-perf/charmProjections.h
src/conv-perf/traceCore.C
src/conv-perf/traceCore.h
src/conv-perf/traceCoreCommon.C
src/conv-perf/traceCoreCommon.h

index 07125c93a40ccca3a3475d25c1e7658668d0b387..6e9dc7b2e7cd244f3105d0d866cd86ee3ca4b3bb 100644 (file)
@@ -48,7 +48,7 @@
 #define _LOG_E_CREATION_N(env, n)      { creation(env, n); }
 #define _LOG_E_BEGIN_EXECUTE(env)      { beginExecute(env); }
 #define _LOG_E_BEGIN_EXECUTE_DETAILED(event, msgType, ep, srcPe, ml) \
 #define _LOG_E_CREATION_N(env, n)      { creation(env, n); }
 #define _LOG_E_BEGIN_EXECUTE(env)      { beginExecute(env); }
 #define _LOG_E_BEGIN_EXECUTE_DETAILED(event, msgType, ep, srcPe, ml) \
-       { beginExecute(event, msgType, ep, srcPe, ml); }
+       { beginExecuteDetailed(event, msgType, ep, srcPe, ml); }
 #define _LOG_E_END_EXECUTE()           { endExecute(); }
 //#define _LOG_E_BEGIN_PROCESSING() 
 //#define _LOG_E_END_PROCESSING() 
 #define _LOG_E_END_EXECUTE()           { endExecute(); }
 //#define _LOG_E_BEGIN_PROCESSING() 
 //#define _LOG_E_END_PROCESSING() 
index 37bcfb11ff8c4f6686d24d9fdeb8687c74ba3fee..de88d7c25fddcc46cb7d4edb25416287784c99f7 100644 (file)
@@ -1,5 +1,6 @@
 
 
-#include "envelope.h"
+#include <stdio.h>
+#include <stdlib.h>
 #include "converse.h"
 #include "charmProjections.h"
 #include "traceCoreCommon.h"
 #include "converse.h"
 #include "charmProjections.h"
 #include "traceCoreCommon.h"
@@ -21,7 +22,9 @@ extern "C" void initCharmProjections()
   curEvent = 0;
 }
 
   curEvent = 0;
 }
 
-extern "C" int  traceRegisterUserEvent(const char*) {} //TODO
+//TODO
+//extern "C" int  traceRegisterUserEvent(const char*) 
+//{return -1;} 
 
 extern "C" void creation(envelope *e, int num)
 {
 
 extern "C" void creation(envelope *e, int num)
 {
@@ -32,7 +35,7 @@ extern "C" void creation(envelope *e, int num)
        iData[1] = _threadEP;
        iData[2] = curEvent++;
        iData[3] = CkMyPe();
        iData[1] = _threadEP;
        iData[2] = curEvent++;
        iData[3] = CkMyPe();
-       LogEvent(_CHARM_LANG_ID, _E_CREATION, 4, iData); 
+       LogEvent1(_CHARM_LANG_ID, _E_CREATION, 4, iData); 
   } else {
     e->setEvent(curEvent);
     for(int i=0; i<num; i++) {
   } else {
     e->setEvent(curEvent);
     for(int i=0; i<num; i++) {
@@ -42,7 +45,7 @@ extern "C" void creation(envelope *e, int num)
                iData[2] = curEvent+i;
                iData[3] = CkMyPe();
                iData[4] = e->getTotalsize();
                iData[2] = curEvent+i;
                iData[3] = CkMyPe();
                iData[4] = e->getTotalsize();
-               LogEvent(_CHARM_LANG_ID, _E_CREATION, 5, iData); 
+               LogEvent1(_CHARM_LANG_ID, _E_CREATION, 5, iData); 
     }
     curEvent += num;
   }
     }
     curEvent += num;
   }
@@ -58,13 +61,13 @@ extern "C" void beginExecute(envelope *e)
        iData[1] = _threadEP;
        iData[2] = execEvent;
        iData[3] = CkMyPe();
        iData[1] = _threadEP;
        iData[2] = execEvent;
        iData[3] = CkMyPe();
-       LogEvent(_CHARM_LANG_ID, _E_BEGIN_PROCESSING, 4, iData); 
+       LogEvent1(_CHARM_LANG_ID, _E_BEGIN_PROCESSING, 4, iData); 
   } else {
   } else {
-    beginExecute(e->getEvent(),e->getMsgtype(),e->getEpIdx(),e->getSrcPe(),e->getTotalsize());
+    beginExecuteDetailed(e->getEvent(),e->getMsgtype(),e->getEpIdx(),e->getSrcPe(),e->getTotalsize());
   }
 }
 
   }
 }
 
-extern "C" void beginExecute(int event,int msgType,int ep,int srcPe,int ml)
+extern "C" void beginExecuteDetailed(int event,int msgType,int ep,int srcPe,int ml)
 {
   execEvent=event;
   execEp=ep;
 {
   execEvent=event;
   execEp=ep;
@@ -75,7 +78,7 @@ extern "C" void beginExecute(int event,int msgType,int ep,int srcPe,int ml)
   iData[2] = event;
   iData[3] = srcPe;
   iData[4] = ml;
   iData[2] = event;
   iData[3] = srcPe;
   iData[4] = ml;
-  LogEvent(_CHARM_LANG_ID, _E_BEGIN_PROCESSING, 5, iData); 
+  LogEvent1(_CHARM_LANG_ID, _E_BEGIN_PROCESSING, 5, iData); 
 }
 
 extern "C" void endExecute(void)
 }
 
 extern "C" void endExecute(void)
@@ -86,14 +89,14 @@ extern "C" void endExecute(void)
        iData[1] = _threadEP;
        iData[2] = execEvent;
        iData[3] = CkMyPe();
        iData[1] = _threadEP;
        iData[2] = execEvent;
        iData[3] = CkMyPe();
-       LogEvent(_CHARM_LANG_ID, _E_END_PROCESSING, 4, iData); 
+       LogEvent1(_CHARM_LANG_ID, _E_END_PROCESSING, 4, iData); 
   } else {
        int* iData = (int*)malloc(sizeof(int)*4); 
        iData[0] = 0;
        iData[1] = execEp;
        iData[2] = execEvent;
        iData[3] = execPe;
   } else {
        int* iData = (int*)malloc(sizeof(int)*4); 
        iData[0] = 0;
        iData[1] = execEp;
        iData[2] = execEvent;
        iData[3] = execPe;
-       LogEvent(_CHARM_LANG_ID, _E_END_PROCESSING, 4, iData); 
+       LogEvent1(_CHARM_LANG_ID, _E_END_PROCESSING, 4, iData); 
   }
 }
 
   }
 }
 
@@ -112,7 +115,7 @@ extern "C" void beginComputation(void)
        int* iData = (int*)malloc(sizeof(int)*4); 
        iData[0] = iData[1] = 0;
        iData[2] = iData[3] = -1;
        int* iData = (int*)malloc(sizeof(int)*4); 
        iData[0] = iData[1] = 0;
        iData[2] = iData[3] = -1;
-       LogEvent(_CHARM_LANG_ID, _E_BEGIN_COMPUTATION, 4, iData); 
+       LogEvent1(_CHARM_LANG_ID, _E_BEGIN_COMPUTATION, 4, iData); 
 }
 
 extern "C" void endComputation(void)
 }
 
 extern "C" void endComputation(void)
@@ -120,18 +123,19 @@ extern "C" void endComputation(void)
        int* iData = (int*)malloc(sizeof(int)*4); 
        iData[0] = iData[1] = 0;
        iData[2] = iData[3] = -1;
        int* iData = (int*)malloc(sizeof(int)*4); 
        iData[0] = iData[1] = 0;
        iData[2] = iData[3] = -1;
-       LogEvent(_CHARM_LANG_ID, _E_END_COMPUTATION, 4, iData); 
+       LogEvent1(_CHARM_LANG_ID, _E_END_COMPUTATION, 4, iData); 
 }
 
 extern "C" void messageRecv(char *env, int pe) {} //TODO
 
 }
 
 extern "C" void messageRecv(char *env, int pe) {} //TODO
 
-extern "C" void userEvent(int e)
+extern "C" void userEvent(int e) {}    //TODO
+
 extern "C" void beginPack(void)
 {
        int* iData = (int*)malloc(sizeof(int)*4); 
        iData[0] = iData[1] = iData[2] = 0;
        iData[3] = CkMyPe();
 extern "C" void beginPack(void)
 {
        int* iData = (int*)malloc(sizeof(int)*4); 
        iData[0] = iData[1] = iData[2] = 0;
        iData[3] = CkMyPe();
-       LogEvent(_CHARM_LANG_ID, _E_BEGIN_PACK, 4, iData); 
+       LogEvent1(_CHARM_LANG_ID, _E_BEGIN_PACK, 4, iData); 
 }
 
 extern "C" void endPack(void)
 }
 
 extern "C" void endPack(void)
@@ -139,7 +143,7 @@ extern "C" void endPack(void)
        int* iData = (int*)malloc(sizeof(int)*4); 
        iData[0] = iData[1] = iData[2] = 0;
        iData[3] = CkMyPe();
        int* iData = (int*)malloc(sizeof(int)*4); 
        iData[0] = iData[1] = iData[2] = 0;
        iData[3] = CkMyPe();
-       LogEvent(_CHARM_LANG_ID, _E_END_PACK, 4, iData); 
+       LogEvent1(_CHARM_LANG_ID, _E_END_PACK, 4, iData); 
 }
 
 extern "C" void beginUnpack(void)
 }
 
 extern "C" void beginUnpack(void)
@@ -147,7 +151,7 @@ extern "C" void beginUnpack(void)
        int* iData = (int*)malloc(sizeof(int)*4); 
        iData[0] = iData[1] = iData[2] = 0;
        iData[3] = CkMyPe();
        int* iData = (int*)malloc(sizeof(int)*4); 
        iData[0] = iData[1] = iData[2] = 0;
        iData[3] = CkMyPe();
-       LogEvent(_CHARM_LANG_ID, _E_BEGIN_UNPACK, 4, iData); 
+       LogEvent1(_CHARM_LANG_ID, _E_BEGIN_UNPACK, 4, iData); 
 }
 
 extern "C" void endUnpack(void)
 }
 
 extern "C" void endUnpack(void)
@@ -155,7 +159,7 @@ extern "C" void endUnpack(void)
        int* iData = (int*)malloc(sizeof(int)*4); 
        iData[0] = iData[1] = iData[2] = 0;
        iData[3] = CkMyPe();
        int* iData = (int*)malloc(sizeof(int)*4); 
        iData[0] = iData[1] = iData[2] = 0;
        iData[3] = CkMyPe();
-       LogEvent(_CHARM_LANG_ID, _E_END_UNPACK, 4, iData); 
+       LogEvent1(_CHARM_LANG_ID, _E_END_UNPACK, 4, iData); 
 }
 
 
 }
 
 
index ee4685a4a442a82f9aff6aacdfb45d5fd58ab907..104085ae63c0b5358ebd972add31c969b4e3c9e9 100644 (file)
@@ -2,18 +2,18 @@
 #ifndef __CHARM_PROJECTIONS_H__
 #define __CHARM_PROJECTIONS_H__
 
 #ifndef __CHARM_PROJECTIONS_H__
 #define __CHARM_PROJECTIONS_H__
 
-#include "envelope.h"
+#include "ck.h"        //NOTE: ck.h included for envelope
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 void initCharmProjections();
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 void initCharmProjections();
-int  traceRegisterUserEvent(const char*);      //TODO
+//int  traceRegisterUserEvent(const char*);    //TODO
 
 void creation(envelope *e, int num=1);
 void beginExecute(envelope *e);
 
 void creation(envelope *e, int num=1);
 void beginExecute(envelope *e);
-void beginExecute(int event,int msgType,int ep,int srcPe,int ml);
+void beginExecuteDetailed(int event,int msgType,int ep,int srcPe,int ml);
 void endExecute(void);
 void enqueue(envelope *e);
 void dequeue(envelope *e);
 void endExecute(void);
 void enqueue(envelope *e);
 void dequeue(envelope *e);
index fce742269216e941d08646cdd1fd681db88b298e..b3abc21307586f6d8bf18aad2f025ac42907e1ea 100644 (file)
@@ -1,13 +1,26 @@
 
 #include <stdio.h>
 #include <stdlib.h>
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <errno.h>
 
 #include "converse.h"
 #include "traceCore.h"
 #include "traceCoreCommon.h"
 
 
 #include "converse.h"
 #include "traceCore.h"
 #include "traceCoreCommon.h"
 
-/* Class TraceCore Definition */
+/***************** Class TraceCore Definition *****************/
 //TODO: currently these are dummy definitions
 //TODO: currently these are dummy definitions
+
+TraceCore::TraceCore(char** argv)
+{
+       int binary = CmiGetArgFlag(argv,"+binary-trace");
+       logPool = new LogPool(CpvAccess(_traceCoreRoot), binary);
+}
+
+TraceCore::~TraceCore()
+{
+       if(logPool) delete logPool;
+}
+
 void TraceCore::RegisterLanguage(int lID)
 {
        CmiPrintf("registering language (%d)\n", lID);
 void TraceCore::RegisterLanguage(int lID)
 {
        CmiPrintf("registering language (%d)\n", lID);
@@ -25,13 +38,173 @@ void TraceCore::LogEvent(int lID, int eID)
 }
 
 void TraceCore::LogEvent(int lID, int eID, int iLen, int* iData)
 }
 
 void TraceCore::LogEvent(int lID, int eID, int iLen, int* iData)
-{ LogEvent(int lID, int eID, int iLen, int* iData, 0, NULL); }
+{ LogEvent(lID, eID, iLen, iData, 0, NULL); }
 
 
-void TraceCore::LogEvent(int lID, int eID, int sLen, char* sData);
-{ LogEvent(int lID, int eID, 0, NULL, int sLen, int* sData); }
+void TraceCore::LogEvent(int lID, int eID, int sLen, char* sData)
+{ LogEvent(lID, eID, 0, NULL, sLen, sData); }
 
 void TraceCore::LogEvent(int lID, int eID, int iLen, int* iData, int sLen, char* sData)
 {
 
 void TraceCore::LogEvent(int lID, int eID, int iLen, int* iData, int sLen, char* sData)
 {
-       CmiPrintf("logging event (%d, %d)\n", lID, eID);
+       CmiPrintf("lID: %d, eID: %d", lID, eID);
+       if(iData != NULL) {
+               CmiPrintf(" iData: ");
+               for(int i=0; i<iLen; i++) { CmiPrintf("%d ", iData[i]); }
+       }
+       if(sData != NULL) {
+               CmiPrintf("sData: %s", sData);
+       }
+       CmiPrintf("\n");
+
+
+       logPool->add(lID, eID, TraceCoreTimer(), iLen, iData, sLen, sData); 
+}
+
+/***************** Class LogEntry Definition *****************/
+LogEntry::~LogEntry()
+{
+       if(entity) delete [] entity;
+       if(iData)  delete [] iData;
+       if(sData)  delete [] sData;
+}
+
+void LogEntry::write(FILE* fp, int prevLID, int prevSeek, int nextLID, int nextSeek)
+{
+       if(prevLID == 0 && nextLID ==0)
+               fprintf(fp, "%d %d %f %d %d", languageID, eventID, timestamp, 0, 0); 
+       else if(prevLID == 0 && nextLID !=0)
+               fprintf(fp, "%d %d %f %d %d %d", languageID, eventID, timestamp, 0, nextLID, nextSeek); 
+       else if(prevLID != 0 && nextLID ==0)
+               fprintf(fp, "%d %d %f %d %d %d", languageID, eventID, timestamp, prevLID, prevSeek, 0); 
+       else // if(prevLID != 0 && nextLID !=0)
+               fprintf(fp, "%d %d %f %d %d %d %d", languageID, eventID, timestamp, prevLID, prevSeek, nextLID, nextSeek);
+
+       fprintf(fp, " %d", eLen);
+       if(eLen != 0) {
+         for(int i=0; i<eLen; i++) fprintf(fp, " %d", entity[i]);  
+       }
+
+       fprintf(fp, " %d", iLen);
+       if(iLen != 0) {
+         for(int i=0; i<iLen; i++) fprintf(fp, " %d", iData[i]);  
+       }
+
+       if(sLen !=0) fprintf(fp, " %s", sData);
+}
+
+/***************** Class LogPool Definition *****************/
+LogPool::LogPool(char* program, int b): numLangs(0)
+{
+  binary = b;
+  pool = new LogEntry[CpvAccess(_traceCoreBufferSize)];
+  numEntries = 0;
+  poolSize = CpvAccess(_traceCoreBufferSize);
+
+  pgm = new char[strlen(program)];
+  sprintf(pgm, "%s", program);
+  openLogFiles();
+  closeLogFiles();
+}
+
+LogPool::~LogPool() 
+{
+  if(binary) writeBinary();
+  else       write();
+  delete [] pool;
+  delete [] fName;
+}
+
+void LogPool::RegisterLanguage(int lID, char* ln)
+{
+       numLangs++;
+
+       lName[lID] = new char[strlen(ln)];
+       sprintf(lName[lID], "%s", ln);
+
+       char pestr[10]; sprintf(pestr, "%d", CmiMyPe());
+       fName[lID] = new char[strlen(pgm)+1+strlen(pestr)+1+strlen(ln)+strlen(".log")];
+       sprintf(fName[lID], "%s.%s.%s.log", pgm, pestr, ln);
+
+       FILE* fp = NULL;
+       do
+       {
+       fp = fopen(fName[lID], "w+");
+       } while (!fp && (errno == EINTR || errno == EMFILE));
+       if(!fp) {
+       CmiAbort("Cannot open Projector Trace File for writing ... \n");
+       }
+       if(!binary) {
+       fprintf(fp, "PROJECTOR-RECORD: %s.%s\n", pestr, lName[lID]);
+       }
+       fclose(fp);
+}
+
+//TODO: incomplete - how to take care of first and last entry's prev and next fields
+void LogPool::write(void)
+{
+       openLogFiles();
+
+       int currLID=0, prevLID=0, nextLID=0;
+       int pLID =0, nLID =0;
+       int currSeek=0, prevSeek=0, nextSeek=0;
+       int i;
+       for(i=0; i<numEntries-1; i++) {
+               currLID  = pool[i].languageID;
+               FILE* fp = fptrs[currLID];
+               currSeek = ftell(fp); 
+               nextLID  = pool[i+1].languageID;
+               nextSeek = ftell(fptrs[nextLID]);
+
+               pLID = ((prevLID==currLID)?0:prevLID);
+               nLID = ((nextLID==currLID)?0:nextLID);
+               pool[i].write(fp, pLID, prevSeek, nLID, nextSeek);
+
+               prevSeek = currSeek; prevLID = currLID; 
+       }
+       //pool[i].write(fptrs[pool[i].languageID], prevLID, prevSeek, 0, 0);    //NOTE: this is wrong ??
+       //TODO how to write the last entry, we donot know about next entry ??
+
+       closeLogFiles();
+}
+
+//TODO
+void LogPool::writeBinary(void) {};
+void LogPool::writeSts(void) {};
+
+void LogPool::add(int lID, int eID, double timestamp, int iLen, int* iData, int sLen, char* sData)
+{
+  new (&pool[numEntries++])
+    LogEntry(lID, eID, timestamp, iLen, iData, sLen, sData); 
+  if(poolSize==numEntries) {
+    double writeTime = TraceCoreTimer();
+
+    if(binary) writeBinary(); 
+       else       write();
+
+    numEntries = 0;
+       //TODO
+    //new (&pool[numEntries++]) LogEntry(0, BEGIN_INTERRUPT, writeTime);
+    //new (&pool[numEntries++]) LogEntry(0, END_INTERRUPT, TraceCoreTimer());
+  }
+}
+
+void LogPool::openLogFiles()
+{
+  for(int i=0; i<numLangs; i++) {
+       FILE* fp = NULL;
+       do
+       {
+       fp = fopen(fName[i], "w+");
+       } while (!fp && (errno == EINTR || errno == EMFILE));
+       if(!fp) {
+       CmiAbort("Cannot open Projector Trace File for writing ... \n");
+       }
+       fptrs[i] = fp;
+  }
+}
+
+void LogPool::closeLogFiles()
+{
+  for(int i=0; i<numLangs; i++)
+       fclose(fptrs[i]);
 }
 
 }
 
index a7c1dd3d3efb1796067ba28cbec4fcf153fc28b1..fb002582fc7182e27af02b761226a001e8addee9 100644 (file)
@@ -16,14 +16,15 @@ class LogPool;
 /* Class Declarations */
 class TraceCore 
 {
 /* Class Declarations */
 class TraceCore 
 {
+  private:
+       LogPool* logPool;
+
   public:
   public:
-       //TODO
-       /*
-       RegisterLanguage(LanuageID)     
-       RegisterEvent(LanguageID, EventID, EventDataPrototype)
-       LogEvent(LanguageID, EventID, EventData)
-       */
-       void RegisterLanguage(int lID);
+       TraceCore(char** argv);
+       ~TraceCore();
+
+       void RegisterLanguage(int lID); //TODO temporary
+       void RegisterLanguage(int lID, char* lName);
        void RegisterEvent(int lID, int eID);
        void LogEvent(int lID, int eID);
        void LogEvent(int lID, int eID, int iLen, int* iData);
        void RegisterEvent(int lID, int eID);
        void LogEvent(int lID, int eID);
        void LogEvent(int lID, int eID, int iLen, int* iData);
@@ -31,22 +32,75 @@ class TraceCore
        void LogEvent(int lID, int eID, int iLen, int* iData, int sLen, char* sData);
 };
 
        void LogEvent(int lID, int eID, int iLen, int* iData, int sLen, char* sData);
 };
 
-//TODO
-class TraceLogger 
-{
-
-};
+//TODO: probably not required at this point. Since we are writing only to file
+class TraceLogger {};
 
 
-//TODO
 class LogEntry
 {
 class LogEntry
 {
+  public:
+       int    languageID;
+       int    eventID;
+       double timestamp;
+       int    eLen;
+       int*   entity;
+       int    iLen;
+       int*   iData;
+       int    sLen;
+       char*  sData;
+
+       LogEntry() {}
+       LogEntry(int lID, int eID, double ts, int el, int* e, 
+                        int il, int* i, int sl, char* s): 
+                        languageID(lID), eventID(eID), timestamp(ts), 
+                        eLen(el), entity(e), iLen(il), iData(i), sLen(sl), sData(s) {}
+       LogEntry(int lID, int eID, double ts,
+                        int il, int* i, int sl, char* s): 
+                        languageID(lID), eventID(eID), timestamp(ts), 
+                        eLen(0), entity(NULL), iLen(il), iData(i), sLen(sl), sData(s) {}
+       ~LogEntry();
+
+    void *operator new(size_t s) {void*ret=malloc(s);_MEMCHECK(ret);return ret;}
+    void *operator new(size_t, void *ptr) { return ptr; }
+    void operator delete(void *ptr) { free(ptr); }
+#ifdef WIN32
+    void operator delete(void *, void *) { }
+#endif
 
 
+       void write(FILE* fp, int prevLID, int prevSeek, int nextLID, int nextSeek);
 };
 
 };
 
-//TODO
 class LogPool
 {
 class LogPool
 {
+  private:
+    int poolSize;
+    int numEntries;
+    LogEntry *pool;
+       
+#define        MAX_NUM_LANGUAGES  10                   //NOTE: fixed temporarily
+
+       int   numLangs;
+       char *lName[MAX_NUM_LANGUAGES];         // Language Name 
+    char *fName[MAX_NUM_LANGUAGES];            // File name
+    FILE *fptrs[MAX_NUM_LANGUAGES];            // File pointer
+    int   binary;
+
+  public:
+    LogPool(char* program, int b);
+    ~LogPool();
+
+       void RegisterLanguage(int lID, char* ln);
+
+    void write(void);
+    void writeBinary(void);
+       void writeSts(void);
+
+    void add(int lID, int eID, double timestamp, int iLen, int* iData, int sLen, char* sData);
+
+  private:
+       void openLogFiles();
+       void closeLogFiles();
 
 
+       char* pgm;
 };
 
 #endif
 };
 
 #endif
index 6cb6363dbb38c4a100d3d1ba31b2b4622bdfe7e6..2cb60bee3d0d29acf517264ef23e115add0e6483 100644 (file)
@@ -53,5 +53,14 @@ extern "C" void RegisterEvent(int lID, int eID)
 extern "C" void LogEvent(int lID, int eID)
 { CpvAccess(_traceCore)->LogEvent(lID, eID); }
 
 extern "C" void LogEvent(int lID, int eID)
 { CpvAccess(_traceCore)->LogEvent(lID, eID); }
 
+extern "C" void LogEvent1(int lID, int eID, int iLen, int* iData)
+{ CpvAccess(_traceCore)->LogEvent(lID, eID, iLen, iData); }
+
+extern "C" void LogEvent2(int lID, int eID, int sLen, char* sData)
+{ CpvAccess(_traceCore)->LogEvent(lID, eID, sLen, sData); }
+
+extern "C" void LogEvent3(int lID, int eID, int iLen, int* iData, int sLen, char* sData)
+{ CpvAccess(_traceCore)->LogEvent(lID, eID, iLen, iData, sLen, sData); }
+
 
 
 
 
index dfa4e0934ee0bc51cd870c26bb470fcc63a0d5fc..7a06f61ebd5e10346f3ae7a9a18485495c9c5197 100644 (file)
@@ -11,6 +11,8 @@ extern "C" {
 /* Trace Storage and associated Structure */
 CpvExtern(int, _traceCoreOn);
 CpvExtern(double, _traceCoreInitTime);
 /* Trace Storage and associated Structure */
 CpvExtern(int, _traceCoreOn);
 CpvExtern(double, _traceCoreInitTime);
+CpvExtern(char*, _traceCoreRoot);
+CpvExtern(int, _traceCoreBufferSize);
 
 /* Trace Timer */
 #define  TRACE_CORE_TIMER   CmiWallTimer
 
 /* Trace Timer */
 #define  TRACE_CORE_TIMER   CmiWallTimer
@@ -29,6 +31,9 @@ void resumeTraceCore();
 void RegisterLanguage(int lID);
 void RegisterEvent(int lID, int eID);
 void LogEvent(int lID, int eID);
 void RegisterLanguage(int lID);
 void RegisterEvent(int lID, int eID);
 void LogEvent(int lID, int eID);
+void LogEvent1(int lID, int eID, int iLen, int* iData);
+void LogEvent2(int lID, int eID, int sLen, char* sData);
+void LogEvent3(int lID, int eID, int iLen, int* iData, int sLen, char* sData);
 
 #ifdef __cplusplus
 }
 
 #ifdef __cplusplus
 }