[IBAL] sync flags bits between free and chk versions
[mirror/winof/.git] / core / al / al_debug.h
1 /*\r
2  * Copyright (c) 2005 SilverStorm Technologies.  All rights reserved.\r
3  * Copyright (c) 1996-2003 Intel Corporation. All rights reserved. \r
4  *\r
5  * This software is available to you under the OpenIB.org BSD license\r
6  * below:\r
7  *\r
8  *     Redistribution and use in source and binary forms, with or\r
9  *     without modification, are permitted provided that the following\r
10  *     conditions are met:\r
11  *\r
12  *      - Redistributions of source code must retain the above\r
13  *        copyright notice, this list of conditions and the following\r
14  *        disclaimer.\r
15  *\r
16  *      - Redistributions in binary form must reproduce the above\r
17  *        copyright notice, this list of conditions and the following\r
18  *        disclaimer in the documentation and/or other materials\r
19  *        provided with the distribution.\r
20  *\r
21  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
22  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
23  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
24  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\r
25  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\r
26  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
27  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r
28  * SOFTWARE.\r
29  *\r
30  * $Id$\r
31  */\r
32 \r
33 #if !defined(__AL_DEBUG_H__)\r
34 #define __AL_DEBUG_H__\r
35 \r
36 #ifdef __MODULE__\r
37 #undef __MODULE__\r
38 #endif\r
39 #define __MODULE__      "[AL]"\r
40 \r
41 \r
42 #include <complib/cl_debug.h>\r
43 #include <complib/cl_perf.h>\r
44 \r
45 extern uint32_t                 g_al_dbg_level;\r
46 extern uint32_t                 g_al_dbg_flags;\r
47 \r
48 #if defined(EVENT_TRACING)\r
49 //\r
50 // Software Tracing Definitions \r
51 //\r
52 \r
53 #ifndef CL_KERNEL\r
54 \r
55 #define WPP_CONTROL_GUIDS \\r
56         WPP_DEFINE_CONTROL_GUID(ALCtlGuid1,(B199CE55,F8BF,4147,B119,DACD1E5987A6),  \\r
57         WPP_DEFINE_BIT( AL_DBG_ERROR) \\r
58         WPP_DEFINE_BIT( AL_DBG_PNP) \\r
59         WPP_DEFINE_BIT( AL_DBG_HDL) \\r
60         WPP_DEFINE_BIT( AL_DBG_AL_OBJ) \\r
61         WPP_DEFINE_BIT( AL_DBG_SMI) \\r
62         WPP_DEFINE_BIT( AL_DBG_SMI_CB) \\r
63         WPP_DEFINE_BIT( AL_DBG_RES1) \\r
64         WPP_DEFINE_BIT( AL_DBG_MAD_POOL) \\r
65         WPP_DEFINE_BIT( AL_DBG_MAD_SVC) \\r
66         WPP_DEFINE_BIT( AL_DBG_RES2) \\r
67         WPP_DEFINE_BIT( AL_DBG_CM) \\r
68         WPP_DEFINE_BIT( AL_DBG_CA) \\r
69         WPP_DEFINE_BIT( AL_DBG_MR) \\r
70         WPP_DEFINE_BIT( AL_DBG_MGR)\\r
71         WPP_DEFINE_BIT( AL_DBG_DEV)\\r
72         WPP_DEFINE_BIT( AL_DBG_MCAST)\\r
73         WPP_DEFINE_BIT( AL_DBG_PD)\\r
74         WPP_DEFINE_BIT( AL_DBG_AV)\\r
75         WPP_DEFINE_BIT( AL_DBG_CQ)\\r
76         WPP_DEFINE_BIT( AL_DBG_QP)\\r
77         WPP_DEFINE_BIT( AL_DBG_RES3) \\r
78         WPP_DEFINE_BIT( AL_DBG_MW)\\r
79         WPP_DEFINE_BIT( AL_DBG_RES4) \\r
80         WPP_DEFINE_BIT( AL_DBG_PROXY_CB)\\r
81         WPP_DEFINE_BIT( AL_DBG_UAL)\\r
82         WPP_DEFINE_BIT( AL_DBG_QUERY)\\r
83         WPP_DEFINE_BIT( AL_DBG_SA_REQ)\\r
84         WPP_DEFINE_BIT( AL_DBG_IOC)\\r
85         WPP_DEFINE_BIT( AL_DBG_SUB)\\r
86         WPP_DEFINE_BIT( AL_DBG_MAD))\r
87 \r
88 #else\r
89 \r
90 #define WPP_CONTROL_GUIDS \\r
91         WPP_DEFINE_CONTROL_GUID(ALCtlGuid2,(99DC84E3,B106,431e,88A6,4DD20C9BBDE3),  \\r
92         WPP_DEFINE_BIT( AL_DBG_ERROR) \\r
93         WPP_DEFINE_BIT( AL_DBG_PNP) \\r
94         WPP_DEFINE_BIT( AL_DBG_HDL) \\r
95         WPP_DEFINE_BIT( AL_DBG_AL_OBJ) \\r
96         WPP_DEFINE_BIT( AL_DBG_SMI) \\r
97         WPP_DEFINE_BIT( AL_DBG_SMI_CB) \\r
98         WPP_DEFINE_BIT( AL_DBG_RES1) \\r
99         WPP_DEFINE_BIT( AL_DBG_MAD_POOL) \\r
100         WPP_DEFINE_BIT( AL_DBG_MAD_SVC) \\r
101         WPP_DEFINE_BIT( AL_DBG_RES2) \\r
102         WPP_DEFINE_BIT( AL_DBG_CM) \\r
103         WPP_DEFINE_BIT( AL_DBG_CA) \\r
104         WPP_DEFINE_BIT( AL_DBG_MR) \\r
105         WPP_DEFINE_BIT( AL_DBG_MGR)\\r
106         WPP_DEFINE_BIT( AL_DBG_DEV)\\r
107         WPP_DEFINE_BIT( AL_DBG_MCAST)\\r
108         WPP_DEFINE_BIT( AL_DBG_PD)\\r
109         WPP_DEFINE_BIT( AL_DBG_AV)\\r
110         WPP_DEFINE_BIT( AL_DBG_CQ)\\r
111         WPP_DEFINE_BIT( AL_DBG_QP)\\r
112         WPP_DEFINE_BIT( AL_DBG_RES3) \\r
113         WPP_DEFINE_BIT( AL_DBG_MW)\\r
114         WPP_DEFINE_BIT( AL_DBG_RES4) \\r
115         WPP_DEFINE_BIT( AL_DBG_PROXY_CB)\\r
116         WPP_DEFINE_BIT( AL_DBG_UAL)\\r
117         WPP_DEFINE_BIT( AL_DBG_QUERY)\\r
118         WPP_DEFINE_BIT( AL_DBG_SA_REQ)\\r
119         WPP_DEFINE_BIT( AL_DBG_IOC)\\r
120         WPP_DEFINE_BIT( AL_DBG_SUB)\\r
121         WPP_DEFINE_BIT( AL_DBG_MAD))\r
122 \r
123 #endif\r
124 \r
125 \r
126 #define WPP_LEVEL_FLAGS_ENABLED(lvl, flags) (WPP_LEVEL_ENABLED(flags) && WPP_CONTROL(WPP_BIT_ ## flags).Level  >= lvl)\r
127 #define WPP_LEVEL_FLAGS_LOGGER(lvl,flags) WPP_LEVEL_LOGGER(flags)\r
128 #define WPP_FLAG_ENABLED(flags)(WPP_LEVEL_ENABLED(flags) && WPP_CONTROL(WPP_BIT_ ## flags).Level  >= TRACE_LEVEL_VERBOSE)\r
129 #define WPP_FLAG_LOGGER(flags) WPP_LEVEL_LOGGER(flags)\r
130 \r
131 \r
132 // begin_wpp config\r
133 // AL_ENTER( FLAG );\r
134 // AL_EXIT( FLAG );\r
135 // USEPREFIX(AL_PRINT, "%!STDPREFIX! [AL] :%!FUNC!() :");\r
136 // USESUFFIX(AL_ENTER, " [AL] :%!FUNC!():[");\r
137 // USESUFFIX(AL_EXIT, " [AL] :%!FUNC!():]");\r
138 // end_wpp\r
139 \r
140 \r
141 \r
142 #else\r
143 \r
144 #include <wmistr.h>\r
145 #include <evntrace.h>\r
146 \r
147 /*\r
148  * Debug macros\r
149  */\r
150 \r
151 \r
152 /* Debug message source */\r
153 #define AL_DBG_ERR      (1 << 0)\r
154 #define AL_DBG_PNP              (1 << 1)\r
155 #define AL_DBG_HDL              (1 << 2)\r
156 #define AL_DBG_AL_OBJ   (1 << 3)\r
157 #define AL_DBG_SMI              (1 << 4)\r
158 #define AL_DBG_SMI_CB   (1 << 5)\r
159 #define AL_DBG_MAD_POOL (1 << 7)\r
160 #define AL_DBG_MAD_SVC  (1 << 8)\r
161 #define AL_DBG_CM               (1 << 10)\r
162 #define AL_DBG_CA               (1 << 11)\r
163 #define AL_DBG_MR               (1 << 12)\r
164 #define AL_DBG_MGR              (1 << 13)\r
165 #define AL_DBG_DEV              (1 << 14)\r
166 #define AL_DBG_MCAST    (1 << 15)\r
167 #define AL_DBG_PD               (1 << 16)\r
168 #define AL_DBG_AV               (1 << 17)\r
169 #define AL_DBG_CQ               (1 << 18)\r
170 #define AL_DBG_QP               (1 << 19)\r
171 #define AL_DBG_MW               (1 << 21)\r
172 #define AL_DBG_PROXY_CB (1 << 23)\r
173 #define AL_DBG_UAL              (1 << 24)\r
174 #define AL_DBG_QUERY    (1 << 25)\r
175 #define AL_DBG_SA_REQ   (1 << 26)\r
176 #define AL_DBG_IOC              (1 << 27)\r
177 #define AL_DBG_SUB              (1 << 28)\r
178 #define AL_DBG_MAD              (1 << 29) //TODO \r
179 \r
180 #define AL_DBG_ERROR    (CL_DBG_ERROR | AL_DBG_ERR)\r
181 \r
182 #if DBG\r
183 \r
184 // assignment of _level_ is need to to overcome warning C4127\r
185 #define AL_PRINT( _level_,_flag_,_msg_)  \\r
186         { \\r
187                 if( g_al_dbg_level >= (_level_) ) \\r
188                         CL_TRACE( _flag_, g_al_dbg_flags, _msg_ ); \\r
189         }\r
190 \r
191 \r
192 #define AL_PRINT_EXIT( _level_,_flag_,_msg_) \\r
193         { \\r
194                 if( g_al_dbg_level >= (_level_) ) \\r
195                         CL_TRACE( _flag_, g_al_dbg_flags, _msg_ );\\r
196                 AL_EXIT( _flag_ );\\r
197         }\r
198 \r
199 #define AL_ENTER( _flag_) \\r
200         { \\r
201                 if( g_al_dbg_level >= TRACE_LEVEL_VERBOSE ) \\r
202                         CL_ENTER( _flag_, g_al_dbg_flags ); \\r
203         }\r
204 \r
205 #define AL_EXIT( _flag_)\\r
206         { \\r
207                 if( g_al_dbg_level >= TRACE_LEVEL_VERBOSE ) \\r
208                         CL_EXIT( _flag_, g_al_dbg_flags ); \\r
209         }\r
210 \r
211 \r
212 #else\r
213 \r
214 #define AL_PRINT( lvl, flags, msg)\r
215 \r
216 #define AL_PRINT_EXIT( _level_,_flag_,_msg_)\r
217 \r
218 #define AL_ENTER( _flag_)\r
219 \r
220 #define AL_EXIT( _flag_)\r
221 \r
222 \r
223 #endif\r
224 \r
225 #endif //EVENT_TRACING\r
226 \r
227 \r
228 \r
229 enum al_perf_counters\r
230 {\r
231         IbPostSend,\r
232                 PostSend,\r
233                         VpPostSend,\r
234                         UalDoPostSend,\r
235 \r
236         IbPollCq,\r
237                 VerbsPollCq,\r
238                         VpPollCq,\r
239                         UalDoPollCq,\r
240 \r
241 \r
242         AlMaxPerf\r
243 \r
244 };\r
245 \r
246 extern cl_perf_t        g_perf;\r
247 \r
248 \r
249 #endif /* __AL_DEBUG_H__ */\r