• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * bmtrace_api.h
3  *
4  * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved.
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  *
11  *  * Redistributions of source code must retain the above copyright
12  *    notice, this list of conditions and the following disclaimer.
13  *  * Redistributions in binary form must reproduce the above copyright
14  *    notice, this list of conditions and the following disclaimer in
15  *    the documentation and/or other materials provided with the
16  *    distribution.
17  *  * Neither the name Texas Instruments nor the names of its
18  *    contributors may be used to endorse or promote products derived
19  *    from this software without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32  */
33 
34 
35 /** \file   bmtrace_api.h
36  *  \brief  bmtrace performance tracing module API definition
37  *
38  *  \see    bmtrace.c
39  */
40 
41 #ifndef __BM_TRACE_API_H
42 #define __BM_TRACE_API_H
43 
44 void            bm_enable(void);
45 void            bm_disable(void);
46 unsigned long   bm_act_trace_in(void);
47 void            bm_act_trace_out(int loc, unsigned long in_ts);
48 int             bm_act_register_event(char* module, char* context, char* group, unsigned char level, char* name, char* suffix, int is_param);
49 void            bm_init(void);
50 int             print_out_buffer(char *buf);
51 
52 
53 #ifdef TIWLAN_BMTRACE
54 #define TIWLAN_CLT_LEVEL 1
55 #else
56 #define TIWLAN_CLT_LEVEL 0
57 #endif
58 
59 #define CL_TRACE_START() \
60 	unsigned long in_ts = bm_act_trace_in();
61 
62 #define CL_TRACE_RESTART_Lx() \
63 	in_ts = bm_act_trace_in();
64 
65 #define CL_TRACE_END(MODULE, CONTEXT, GROUP, LEVEL, SUFFIX) \
66 	{ \
67 		static int loc = 0; \
68 		if (loc==0) \
69 			loc = bm_act_register_event(MODULE, CONTEXT, GROUP, LEVEL, (char*)__FUNCTION__, SUFFIX, 0); \
70 		bm_act_trace_out(loc, in_ts); \
71 	}
72 
73 	#define CL_TRACE_START_L0() CL_TRACE_START()
74 	#define CL_TRACE_END_L0() CL_TRACE_END("KERNEL", "SYS_CALL", "PLATFORM_TEST", 0, "")
75 
76 #if TIWLAN_CLT_LEVEL == 1
77     #define CL_TRACE_INIT()     bm_init()
78     #define CL_TRACE_ENABLE()   bm_enable()
79     #define CL_TRACE_DISABLE()  bm_disable()
80     #define CL_TRACE_PRINT(buf) print_out_buffer(buf)
81 	#define CL_TRACE_START_L1() CL_TRACE_START()
82 	#define CL_TRACE_START_L2()
83 	#define CL_TRACE_START_L3()
84 	#define CL_TRACE_START_L4()
85 	#define CL_TRACE_START_L5()
86     #define CL_TRACE_RESTART()  CL_TRACE_RESTART_Lx()
87 	#define CL_TRACE_END_L1(MODULE, CONTEXT, GROUP, SUFFIX) CL_TRACE_END(MODULE, CONTEXT, GROUP, 1, SUFFIX)
88 	#define CL_TRACE_END_L2(MODULE, CONTEXT, GROUP, SUFFIX)
89 	#define CL_TRACE_END_L3(MODULE, CONTEXT, GROUP, SUFFIX)
90 	#define CL_TRACE_END_L4(MODULE, CONTEXT, GROUP, SUFFIX)
91 	#define CL_TRACE_END_L5(MODULE, CONTEXT, GROUP, SUFFIX)
92 #elif TIWLAN_CLT_LEVEL == 2
93     #define CL_TRACE_INIT()     bm_init()
94     #define CL_TRACE_ENABLE()   bm_enable()
95     #define CL_TRACE_DISABLE()  bm_disable()
96     #define CL_TRACE_PRINT(buf) print_out_buffer(buf)
97 	#define CL_TRACE_START_L1() CL_TRACE_START()
98 	#define CL_TRACE_START_L2() CL_TRACE_START()
99 	#define CL_TRACE_START_L3()
100 	#define CL_TRACE_START_L4()
101 	#define CL_TRACE_START_L5()
102     #define CL_TRACE_RESTART()  CL_TRACE_RESTART_Lx()
103 	#define CL_TRACE_END_L1(MODULE, CONTEXT, GROUP, SUFFIX) CL_TRACE_END(MODULE, CONTEXT, GROUP, 1, SUFFIX)
104 	#define CL_TRACE_END_L2(MODULE, CONTEXT, GROUP, SUFFIX) CL_TRACE_END(MODULE, CONTEXT, GROUP, 2, SUFFIX)
105 	#define CL_TRACE_END_L3(MODULE, CONTEXT, GROUP, SUFFIX)
106 	#define CL_TRACE_END_L4(MODULE, CONTEXT, GROUP, SUFFIX)
107 	#define CL_TRACE_END_L5(MODULE, CONTEXT, GROUP, SUFFIX)
108 #elif TIWLAN_CLT_LEVEL == 3
109     #define CL_TRACE_INIT()     bm_init()
110     #define CL_TRACE_ENABLE()   bm_enable()
111     #define CL_TRACE_DISABLE()  bm_disable()
112     #define CL_TRACE_PRINT(buf) print_out_buffer(buf)
113 	#define CL_TRACE_START_L1() CL_TRACE_START()
114 	#define CL_TRACE_START_L2() CL_TRACE_START()
115 	#define CL_TRACE_START_L3() CL_TRACE_START()
116 	#define CL_TRACE_START_L4()
117 	#define CL_TRACE_START_L5()
118     #define CL_TRACE_RESTART()  CL_TRACE_RESTART_Lx()
119 	#define CL_TRACE_END_L1(MODULE, CONTEXT, GROUP, SUFFIX) CL_TRACE_END(MODULE, CONTEXT, GROUP, 1, SUFFIX)
120 	#define CL_TRACE_END_L2(MODULE, CONTEXT, GROUP, SUFFIX) CL_TRACE_END(MODULE, CONTEXT, GROUP, 2, SUFFIX)
121 	#define CL_TRACE_END_L3(MODULE, CONTEXT, GROUP, SUFFIX) CL_TRACE_END(MODULE, CONTEXT, GROUP, 3, SUFFIX)
122 	#define CL_TRACE_END_L4(MODULE, CONTEXT, GROUP, SUFFIX)
123 	#define CL_TRACE_END_L5(MODULE, CONTEXT, GROUP, SUFFIX)
124 #elif TIWLAN_CLT_LEVEL == 4
125     #define CL_TRACE_INIT()     bm_init()
126     #define CL_TRACE_ENABLE()   bm_enable()
127     #define CL_TRACE_DISABLE()  bm_disable()
128     #define CL_TRACE_PRINT(buf) print_out_buffer(buf)
129 	#define CL_TRACE_START_L1() CL_TRACE_START()
130 	#define CL_TRACE_START_L2() CL_TRACE_START()
131 	#define CL_TRACE_START_L3() CL_TRACE_START()
132 	#define CL_TRACE_START_L4() CL_TRACE_START()
133 	#define CL_TRACE_START_L5()
134     #define CL_TRACE_RESTART()  CL_TRACE_RESTART_Lx()
135 	#define CL_TRACE_END_L1(MODULE, CONTEXT, GROUP, SUFFIX) CL_TRACE_END(MODULE, CONTEXT, GROUP, 1, SUFFIX)
136 	#define CL_TRACE_END_L2(MODULE, CONTEXT, GROUP, SUFFIX) CL_TRACE_END(MODULE, CONTEXT, GROUP, 2, SUFFIX)
137 	#define CL_TRACE_END_L3(MODULE, CONTEXT, GROUP, SUFFIX) CL_TRACE_END(MODULE, CONTEXT, GROUP, 3, SUFFIX)
138 	#define CL_TRACE_END_L4(MODULE, CONTEXT, GROUP, SUFFIX) CL_TRACE_END(MODULE, CONTEXT, GROUP, 4, SUFFIX)
139 	#define CL_TRACE_END_L5(MODULE, CONTEXT, GROUP, SUFFIX)
140 #elif TIWLAN_CLT_LEVEL == 5
141     #define CL_TRACE_INIT()     bm_init()
142     #define CL_TRACE_ENABLE()   bm_enable()
143     #define CL_TRACE_DISABLE()  bm_disable()
144     #define CL_TRACE_PRINT(buf) print_out_buffer(buf)
145 	#define CL_TRACE_START_L1() CL_TRACE_START()
146 	#define CL_TRACE_START_L1() CL_TRACE_START()
147 	#define CL_TRACE_START_L2() CL_TRACE_START()
148 	#define CL_TRACE_START_L3() CL_TRACE_START()
149 	#define CL_TRACE_START_L4() CL_TRACE_START()
150 	#define CL_TRACE_START_L5() CL_TRACE_START()
151     #define CL_TRACE_RESTART()  CL_TRACE_RESTART_Lx()
152 	#define CL_TRACE_END_L1(MODULE, CONTEXT, GROUP, SUFFIX) CL_TRACE_END(MODULE, CONTEXT, GROUP, 1, SUFFIX)
153 	#define CL_TRACE_END_L2(MODULE, CONTEXT, GROUP, SUFFIX) CL_TRACE_END(MODULE, CONTEXT, GROUP, 2, SUFFIX)
154 	#define CL_TRACE_END_L3(MODULE, CONTEXT, GROUP, SUFFIX) CL_TRACE_END(MODULE, CONTEXT, GROUP, 3, SUFFIX)
155 	#define CL_TRACE_END_L4(MODULE, CONTEXT, GROUP, SUFFIX) CL_TRACE_END(MODULE, CONTEXT, GROUP, 4, SUFFIX)
156 	#define CL_TRACE_END_L5(MODULE, CONTEXT, GROUP, SUFFIX) CL_TRACE_END(MODULE, CONTEXT, GROUP, 5, SUFFIX)
157 #else
158     #define CL_TRACE_INIT()
159     #define CL_TRACE_ENABLE()
160     #define CL_TRACE_DISABLE()
161     #define CL_TRACE_RESTART()
162     #define CL_TRACE_PRINT(buf)
163 	#define CL_TRACE_START_L1()
164 	#define CL_TRACE_START_L1()
165 	#define CL_TRACE_START_L2()
166 	#define CL_TRACE_START_L3()
167 	#define CL_TRACE_START_L4()
168 	#define CL_TRACE_START_L5()
169 	#define CL_TRACE_END_L1(MODULE, CONTEXT, GROUP, SUFFIX)
170 	#define CL_TRACE_END_L2(MODULE, CONTEXT, GROUP, SUFFIX)
171 	#define CL_TRACE_END_L3(MODULE, CONTEXT, GROUP, SUFFIX)
172 	#define CL_TRACE_END_L4(MODULE, CONTEXT, GROUP, SUFFIX)
173 	#define CL_TRACE_END_L5(MODULE, CONTEXT, GROUP, SUFFIX)
174 #endif
175 
176 
177 #endif /* __BM_TRACE_API_H */
178