Merge nodehelper lib and example codes into charm
[charm.git] / src / ck-perf / trace-memory.h
1 #ifndef __TRACE_MEMORY_H__
2 #define __TRACE_MEMORY_H__
3
4 #include "charm++.h"
5 #include "trace.h"
6 #include "trace-common.h"
7 #include <errno.h>
8
9 /** A representant of a memory operation */
10
11 class MemEntry {
12   friend class TraceMemory;
13  private:
14   int type;
15   void *where;
16   int size;
17   int stackSize;
18   
19  public:  
20   MemEntry();
21   void write(FILE *fp);
22   void set(int t, void *w, int s) {
23     type = t;
24     where = w;
25     size = s;
26     stackSize = 0;
27   }
28   void setStack(int ss, void **s) {
29     stackSize = ss;
30     memcpy(this+1, s, ss*sizeof(void*));
31   }
32 };
33
34 /**
35    class to trace all memory related events. Currently works only in conjunction
36    with "-memory charmdebug".
37 */
38 class TraceMemory : public Trace {
39  private:
40   int firstTime;
41   int logBufSize;
42   int usedBuffer;
43   bool recordStack;
44   char *logBuffer;
45   bool traceDisabled;
46
47   void checkFlush(int add);
48   void flush();
49  public:
50   TraceMemory(char **argv);
51   
52   void traceBegin();
53   void traceClose();
54   void malloc(void *where, int size, void **stack, int stackSize);
55   void free(void *where, int size);
56 };
57
58 #endif