Fixed message tracing on comm thread (to trace those entry methods that need
[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
17 #include <stdlib.h>
18 #if defined(_WIN32) && !defined(__CYGWIN__)
19 #include <direct.h>
20 #define CHDIR _chdir
21 #define GETCWD _getcwd
22 #define PATHSEP '\\'
23 #define PATHSEPSTR "\\"
24 #else
25 #include <unistd.h>
26 #define CHDIR chdir
27 #define GETCWD getcwd
28 #define PATHSEP '/'
29 #define PATHSEPSTR "/"
30 #endif
31
32
33 #define  CREATION           1
34 #define  BEGIN_PROCESSING   2
35 #define  END_PROCESSING     3
36 #define  ENQUEUE            4
37 #define  DEQUEUE            5
38 #define  BEGIN_COMPUTATION  6
39 #define  END_COMPUTATION    7
40 #define  BEGIN_INTERRUPT    8
41 #define  END_INTERRUPT      9
42 #define  MESSAGE_RECV       10
43 #define  BEGIN_TRACE        11
44 #define  END_TRACE          12
45 #define  USER_EVENT         13
46 #define  BEGIN_IDLE         14
47 #define  END_IDLE           15
48 #define  BEGIN_PACK         16
49 #define  END_PACK           17
50 #define  BEGIN_UNPACK       18
51 #define  END_UNPACK         19
52 #define  CREATION_BCAST     20
53
54 #define  CREATION_MULTICAST 21
55
56 #define  BEGIN_FUNC         22
57 #define  END_FUNC           23
58
59 /* Memory tracing */
60 #define  MEMORY_MALLOC      24
61 #define  MEMORY_FREE        25
62
63 /* Trace user supplied data */
64 #define USER_SUPPLIED       26
65
66 /* Trace memory usage */
67 #define MEMORY_USAGE_CURRENT       27
68
69 /* Trace user supplied note (text string)  */
70 #define USER_SUPPLIED_NOTE       28
71
72 /* Trace user supplied note (text string, with start, end times, and user event id)  */
73 #define USER_SUPPLIED_BRACKETED_NOTE       29
74
75 /* Support for Phases and time-partial logs */
76 #define END_PHASE           30
77 #define SURROGATE_BLOCK     31 /* inserted by cluster analysis only */
78
79 #define  USER_EVENT_PAIR    100
80
81 CkpvExtern(CmiInt8, CtrLogBufSize);
82 CkpvExtern(char*, traceRoot);
83 CkpvExtern(int, traceRootBaseLength);
84 CkpvExtern(char*, selective);
85 CkpvExtern(bool, verbose);
86 CkpvExtern(double, traceInitTime);
87 CkpvExtern(double, traceInitCpuTime);
88
89 #if CMK_BLUEGENE_CHARM
90 #define  TRACE_TIMER   BgGetTime
91 #define  TRACE_CPUTIMER   BgGetTime
92 inline double TraceTimer() { return TRACE_TIMER(); }
93 inline double TraceTimer(double t) { return t; }
94 inline double TraceCpuTimer() { return TRACE_TIMER(); }
95 inline double TraceCpuTimer(double t) { return t; }
96 #else
97 #define  TRACE_TIMER   CmiWallTimer
98 #define  TRACE_CPUTIMER   CmiCpuTimer
99 inline double TraceTimer() { return TRACE_TIMER() - CkpvAccess(traceInitTime); }
100 inline double TraceTimer(double t) { return t - CkpvAccess(traceInitTime); }
101 inline double TraceCpuTimer() { return TRACE_CPUTIMER() - CkpvAccess(traceInitCpuTime); }
102 inline double TraceCpuTimer(double t) { return t - CkpvAccess(traceInitCpuTime); }
103 #endif
104
105 #define TRACE_WARN(msg) if (CkpvAccess(verbose)) CmiPrintf(msg)
106
107 /** Tracing-specific registered Charm entities: */
108 extern int _threadMsg, _threadChare, _threadEP;
109 extern int _packMsg, _packChare, _packEP;
110 extern int _unpackMsg, _unpackChare, _unpackEP;
111 extern int _dummyMsg, _dummyChare, _dummyEP;
112
113 /** Write out the common parts of the .sts file. */
114 extern void traceWriteSTS(FILE *stsfp,int nUserEvents);
115
116 extern "C" void (*registerMachineUserEvents())();
117
118 #endif
119
120 /*@}*/