814ff478c370b97e6c47a36d6249f388b4e5c9c1
[charm.git] / src / ck-perf / trace-common.h
1 /*****************************************************************************
2  * $Source$
3  * $Author$
4  * $Date$
5  * $Revision$
6  *****************************************************************************/
7
8 /**
9  * \addtogroup CkPerf
10 */
11 /*@{*/
12
13 #ifndef __TRACE_COMMON_H__
14 #define __TRACE_COMMON_H__
15
16 #define  CREATION           1
17 #define  BEGIN_PROCESSING   2
18 #define  END_PROCESSING     3
19 #define  ENQUEUE            4
20 #define  DEQUEUE            5
21 #define  BEGIN_COMPUTATION  6
22 #define  END_COMPUTATION    7
23 #define  BEGIN_INTERRUPT    8
24 #define  END_INTERRUPT      9
25 #define  MESSAGE_RECV       10
26 #define  BEGIN_TRACE        11
27 #define  END_TRACE          12
28 #define  USER_EVENT         13
29 #define  BEGIN_IDLE         14
30 #define  END_IDLE           15
31 #define  BEGIN_PACK         16
32 #define  END_PACK           17
33 #define  BEGIN_UNPACK       18
34 #define  END_UNPACK         19
35 #define  CREATION_BCAST     20
36
37 #define  CREATION_MULTICAST 21
38
39 #define  BEGIN_FUNC         22
40 #define  END_FUNC           23
41
42 /* Memory tracing */
43 #define  MEMORY_MALLOC      24
44 #define  MEMORY_FREE        25
45
46 /* Trace user supplied data */
47 #define USER_SUPPLIED       26
48
49 /* Trace memory usage */
50 #define MEMORY_USAGE_CURRENT       27
51
52 /* Trace user supplied note (text string)  */
53 #define USER_SUPPLIED_NOTE       28
54
55 /* Trace user supplied note (text string, with start, end times, and user event id)  */
56 #define USER_SUPPLIED_BRACKETED_NOTE       29
57
58
59
60 #define  USER_EVENT_PAIR    100
61
62 CkpvExtern(int, CtrLogBufSize);
63 CkpvExtern(char*, traceRoot);
64 CkpvExtern(char*, selective);
65 CkpvExtern(bool, verbose);
66 CkpvExtern(double, traceInitTime);
67 CkpvExtern(double, traceInitCpuTime);
68
69 #if CMK_BLUEGENE_CHARM
70 #define  TRACE_TIMER   BgGetTime
71 #define  TRACE_CPUTIMER   BgGetTime
72 inline double TraceTimer() { return TRACE_TIMER(); }
73 inline double TraceTimer(double t) { return t; }
74 inline double TraceCpuTimer() { return TRACE_TIMER(); }
75 inline double TraceCpuTimer(double t) { return t; }
76 #else
77 #define  TRACE_TIMER   CmiWallTimer
78 #define  TRACE_CPUTIMER   CmiCpuTimer
79 inline double TraceTimer() { return TRACE_TIMER() - CkpvAccess(traceInitTime); }
80 inline double TraceTimer(double t) { return t - CkpvAccess(traceInitTime); }
81 inline double TraceCpuTimer() { return TRACE_CPUTIMER() - CkpvAccess(traceInitCpuTime); }
82 inline double TraceCpuTimer(double t) { return t - CkpvAccess(traceInitCpuTime); }
83 #endif
84
85 #define TRACE_WARN(msg) if (CkpvAccess(verbose)) CmiPrintf(msg)
86
87 /** Tracing-specific registered Charm entities: */
88 extern int _threadMsg, _threadChare, _threadEP;
89 extern int _packMsg, _packChare, _packEP;
90 extern int _unpackMsg, _unpackChare, _unpackEP;
91 extern int _dummyMsg, _dummyChare, _dummyEP;
92
93 /** Write out the common parts of the .sts file. */
94 extern void traceWriteSTS(FILE *stsfp,int nUserEvents);
95
96 extern "C" void (*registerMachineUserEvents())();
97
98 #endif
99
100 /*@}*/