d6c0d1ab9b67ca5ede719b170d77cfb55723764c
[charm.git] / src / ck-perf / trace-simple.h
1 #ifndef _VERBOSE_H
2 #define _VERBOSE_H
3
4 #include <stdio.h>
5 #include <errno.h>
6
7 #include "trace.h"
8 #include "envelope.h"
9 #include "register.h"
10 #include "trace-common.h"
11
12 /**
13  *  TraceSimple is a template for an instrumentation module making use of
14  *    the tracing framework hooks provided in Charm++.
15  *
16  *  Only the more common hooks are listened to in this module.
17  */
18 class TraceSimple : public Trace {
19  public:
20   int par0;
21   double par1;
22  public:
23   TraceSimple(char **argv);
24   
25   // a user event has just occured
26   void userEvent(int eventID);
27   // a pair of begin/end user event has just occured
28   void userBracketEvent(int eventID, double bt, double et);
29   
30   void appWork(int e, double bt, double et);
31   // "creation" of message(s) - message Sends
32   void creation(envelope *, int epIdx, int num=1);
33   void creation(char *msg) {}
34   void creationMulticast(envelope *, int epIdx, int num=1, int *pelist=NULL);
35   void creationDone(int num=1);
36   
37   void messageRecv(char *env, int pe);
38   
39   // **************************************************************
40   // begin/end execution of a Charm++ entry point
41   // NOTE: begin/endPack and begin/endUnpack can be called in between
42   //       a beginExecute and its corresponding endExecute.
43   void beginExecute(envelope *);
44   void beginExecute(char *) {}
45   void beginExecute(CmiObjId *tid);
46   void beginExecute(
47                     int event,   // event type defined in trace-common.h
48                     int msgType, // message type
49                     int ep,      // Charm++ entry point id
50                     int srcPe,   // Which PE originated the call
51                     int ml,      // message size
52                     CmiObjId* idx);    // index
53   void endExecute(void);
54   
55   // begin/end idle time for this pe
56   void beginIdle(double curWallTime);
57   void endIdle(double curWallTime);
58   
59   // begin/end of execution
60   void beginComputation(void);
61   void endComputation(void);
62   
63   /* Memory tracing */
64   void malloc(void *where, int size, void **stack, int stackSize);
65   void free(void *where, int size);
66   
67   // do any clean-up necessary for tracing
68   void traceClose();
69 };
70
71 #endif
72
73 /*@}*/