| preludedrew | f4ed1b6 | 2010-12-30 20:53:51 -0700 | [diff] [blame^] | 1 | /* |
| 2 | * Copyright 2001-2008 Texas Instruments - http://www.ti.com/ |
| 3 | * |
| 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
| 5 | * you may not use this file except in compliance with the License. |
| 6 | * You may obtain a copy of the License at |
| 7 | * |
| 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
| 9 | * |
| 10 | * Unless required by applicable law or agreed to in writing, software |
| 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
| 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 13 | * See the License for the specific language governing permissions and |
| 14 | * limitations under the License. |
| 15 | */ |
| 16 | |
| 17 | |
| 18 | /* |
| 19 | * ======== gt.h ======== |
| 20 | * Purpose: |
| 21 | * There are two definitions that affect which portions of trace |
| 22 | * are acutally compiled into the client: GT_TRACE and GT_ASSERT. If |
| 23 | * GT_TRACE is set to 0 then all trace statements (except for assertions) |
| 24 | * will be compiled out of the client. If GT_ASSERT is set to 0 then |
| 25 | * assertions will be compiled out of the client. GT_ASSERT can not be |
| 26 | * set to 0 unless GT_TRACE is also set to 0 (i.e. GT_TRACE == 1 implies |
| 27 | * GT_ASSERT == 1). |
| 28 | * |
| 29 | *! Revision History |
| 30 | *! ================ |
| 31 | *! 02-Feb-2000 rr: Renamed this file to gtce.h. GT CLASS and trace definitions |
| 32 | *! are WinCE Specific. |
| 33 | *! 03-Jan-1997 ge Replaced "GT_" prefix to GT_Config structure members |
| 34 | *! to eliminate preprocessor confusion with other macros. |
| 35 | */ |
| 36 | |
| 37 | #ifndef GT_ |
| 38 | #define GT_ |
| 39 | |
| 40 | #ifndef GT_TRACE |
| 41 | #define GT_TRACE 0 /* 0 = "trace compiled out"; 1 = "trace active" */ |
| 42 | #endif |
| 43 | |
| 44 | #if !defined(GT_ASSERT) || GT_TRACE |
| 45 | #define GT_ASSERT 1 |
| 46 | #endif |
| 47 | |
| 48 | struct GT_Config { |
| 49 | Fxn PRINTFXN; |
| 50 | Fxn PIDFXN; |
| 51 | Fxn TIDFXN; |
| 52 | Fxn ERRORFXN; |
| 53 | }; |
| 54 | |
| 55 | extern struct GT_Config *GT; |
| 56 | |
| 57 | struct GT_Mask { |
| 58 | String modName; |
| 59 | SmBits *flags; |
| 60 | } ; |
| 61 | |
| 62 | /* |
| 63 | * New GT Class defenitions. |
| 64 | * |
| 65 | * The following are the explanations and how it could be used in the code |
| 66 | * |
| 67 | * - GT_ENTER On Entry to Functions |
| 68 | * |
| 69 | * - GT_1CLASS Display level of debugging status- Object/Automatic |
| 70 | * variables |
| 71 | * - GT_2CLASS ---- do ---- |
| 72 | * |
| 73 | * - GT_3CLASS ---- do ---- + It can be used(recommended) for debug |
| 74 | status in the ISR, IST |
| 75 | * - GT_4CLASS ---- do ---- |
| 76 | * |
| 77 | * - GT_5CLASS Display entry for module init/exit functions |
| 78 | * |
| 79 | * - GT_6CLASS Warn whenever SERVICES function fails |
| 80 | * |
| 81 | * - GT_7CLASS Warn failure of Critical failures |
| 82 | * |
| 83 | */ |
| 84 | |
| 85 | #define GT_ENTER ((SmBits)0x01) |
| 86 | #define GT_1CLASS ((SmBits)0x02) |
| 87 | #define GT_2CLASS ((SmBits)0x04) |
| 88 | #define GT_3CLASS ((SmBits)0x08) |
| 89 | #define GT_4CLASS ((SmBits)0x10) |
| 90 | #define GT_5CLASS ((SmBits)0x20) |
| 91 | #define GT_6CLASS ((SmBits)0x40) |
| 92 | #define GT_7CLASS ((SmBits)0x80) |
| 93 | |
| 94 | #ifdef _LINT_ |
| 95 | |
| 96 | /* LINTLIBRARY */ |
| 97 | |
| 98 | /* |
| 99 | * ======== GT_assert ======== |
| 100 | */ |
| 101 | /* ARGSUSED */ |
| 102 | Void |
| 103 | GT_assert(struct GT_Mask mask, Int expr) |
| 104 | { |
| 105 | } |
| 106 | |
| 107 | /* |
| 108 | * ======== GT_config ======== |
| 109 | */ |
| 110 | /* ARGSUSED */ |
| 111 | Void |
| 112 | GT_config(struct GT_Config config) |
| 113 | { |
| 114 | } |
| 115 | |
| 116 | /* |
| 117 | * ======== GT_create ======== |
| 118 | */ |
| 119 | /* ARGSUSED */ |
| 120 | Void |
| 121 | GT_create(struct GT_Mask * mask /* OUT */ , String modName) |
| 122 | { |
| 123 | } |
| 124 | |
| 125 | /* |
| 126 | * ======== GT_curLine ======== |
| 127 | * Purpose: |
| 128 | * Returns the current source code line number. Is useful for performing |
| 129 | * branch testing using trace. For example, |
| 130 | * |
| 131 | * GT_1trace(curTrace, GT_1CLASS, |
| 132 | * "in module XX_mod, executing line %u\n", GT_curLine()); |
| 133 | */ |
| 134 | /* ARGSUSED */ |
| 135 | MdUns |
| 136 | GT_curLine(Void) |
| 137 | { |
| 138 | return ((MdUns) NULL); |
| 139 | } |
| 140 | |
| 141 | /* |
| 142 | * ======== GT_exit ======== |
| 143 | */ |
| 144 | /* ARGSUSED */ |
| 145 | Void |
| 146 | GT_exit(Void) |
| 147 | { |
| 148 | } |
| 149 | |
| 150 | /* |
| 151 | * ======== GT_init ======== |
| 152 | */ |
| 153 | /* ARGSUSED */ |
| 154 | Void |
| 155 | GT_init(Void) |
| 156 | { |
| 157 | } |
| 158 | |
| 159 | /* |
| 160 | * ======== GT_query ======== |
| 161 | */ |
| 162 | /* ARGSUSED */ |
| 163 | bool |
| 164 | GT_query(struct GT_Mask mask, SmBits class) |
| 165 | { |
| 166 | return (false); |
| 167 | } |
| 168 | |
| 169 | /* |
| 170 | * ======== GT_set ======== |
| 171 | * sets trace mask according to settings |
| 172 | */ |
| 173 | |
| 174 | /* ARGSUSED */ |
| 175 | Void |
| 176 | GT_set(String settings) |
| 177 | { |
| 178 | } |
| 179 | |
| 180 | /* |
| 181 | * ======== GT_setprintf ======== |
| 182 | * sets printf function |
| 183 | */ |
| 184 | |
| 185 | /* ARGSUSED */ |
| 186 | Void |
| 187 | GT_setprintf(Fxn fxn) |
| 188 | { |
| 189 | } |
| 190 | |
| 191 | /* ARGSUSED */ |
| 192 | Void |
| 193 | GT_0trace(struct GT_Mask mask, SmBits class, String format) |
| 194 | { |
| 195 | } |
| 196 | |
| 197 | /* ARGSUSED */ |
| 198 | Void |
| 199 | GT_1trace(struct GT_Mask mask, SmBits class, String format, ...) |
| 200 | { |
| 201 | } |
| 202 | |
| 203 | /* ARGSUSED */ |
| 204 | Void |
| 205 | GT_2trace(struct GT_Mask mask, SmBits class, String format, ...) |
| 206 | { |
| 207 | } |
| 208 | |
| 209 | /* ARGSUSED */ |
| 210 | Void |
| 211 | GT_3trace(struct GT_Mask mask, SmBits class, String format, ...) |
| 212 | { |
| 213 | } |
| 214 | |
| 215 | /* ARGSUSED */ |
| 216 | Void |
| 217 | GT_4trace(struct GT_Mask mask, SmBits class, String format, ...) |
| 218 | { |
| 219 | } |
| 220 | |
| 221 | /* ARGSUSED */ |
| 222 | Void |
| 223 | GT_5trace(struct GT_Mask mask, SmBits class, String format, ...) |
| 224 | { |
| 225 | } |
| 226 | |
| 227 | /* ARGSUSED */ |
| 228 | Void |
| 229 | GT_6trace(struct GT_Mask mask, SmBits class, String format, ...) |
| 230 | { |
| 231 | } |
| 232 | |
| 233 | #else |
| 234 | |
| 235 | #define GT_BOUND 26 /* 26 letters in alphabet */ |
| 236 | |
| 237 | extern Void _GT_create(struct GT_Mask * mask, String modName); |
| 238 | |
| 239 | #define GT_exit() |
| 240 | |
| 241 | extern Void GT_init(Void); |
| 242 | extern Void _GT_set(String str); |
| 243 | extern Int _GT_trace(struct GT_Mask * mask, String format, ...); |
| 244 | |
| 245 | #if GT_ASSERT == 0 |
| 246 | |
| 247 | #define GT_assert( mask, expr ) |
| 248 | #define GT_config( config ) |
| 249 | #define GT_configInit( config ) |
| 250 | #define GT_seterror( fxn ) |
| 251 | |
| 252 | #else |
| 253 | |
| 254 | extern struct GT_Config _GT_params; |
| 255 | |
| 256 | #define GT_assert( mask, expr ) \ |
| 257 | (!(expr) ? \ |
| 258 | (*GT->ERRORFXN)("assertion violation: %s, line %d\n", \ |
| 259 | __FILE__, __LINE__), NULL : NULL) |
| 260 | |
| 261 | #define GT_config( config ) (_GT_params = *(config)) |
| 262 | #define GT_configInit( config ) (*(config) = _GT_params) |
| 263 | #define GT_seterror( fxn ) (_GT_params.ERRORFXN = (Fxn)(fxn)) |
| 264 | |
| 265 | #endif |
| 266 | |
| 267 | #if GT_TRACE == 0 |
| 268 | |
| 269 | #define GT_curLine() ((MdUns)__LINE__) |
| 270 | #define GT_create(mask, modName) |
| 271 | #define GT_exit() |
| 272 | #define GT_init() |
| 273 | #define GT_set( settings ) |
| 274 | #define GT_setprintf( fxn ) |
| 275 | |
| 276 | #define GT_query( mask, class ) false |
| 277 | |
| 278 | #define GT_0trace( mask, class, format ) |
| 279 | #define GT_1trace( mask, class, format, arg1 ) |
| 280 | #define GT_2trace( mask, class, format, arg1, arg2 ) |
| 281 | #define GT_3trace( mask, class, format, arg1, arg2, arg3 ) |
| 282 | #define GT_4trace( mask, class, format, arg1, arg2, arg3, arg4 ) |
| 283 | #define GT_5trace( mask, class, format, arg1, arg2, arg3, arg4, arg5 ) |
| 284 | #define GT_6trace( mask, class, format, arg1, arg2, arg3, arg4, arg5, arg6 ) |
| 285 | |
| 286 | #else /* GT_TRACE == 1 */ |
| 287 | |
| 288 | extern String GT_format; |
| 289 | extern SmBits *GT_tMask[GT_BOUND]; |
| 290 | |
| 291 | #define GT_create(mask, modName) _GT_create((mask), (modName)) |
| 292 | #define GT_curLine() ((MdUns)__LINE__) |
| 293 | #define GT_set( settings ) _GT_set( settings ) |
| 294 | #define GT_setprintf( fxn ) (_GT_params.PRINTFXN = (Fxn)(fxn)) |
| 295 | |
| 296 | #define GT_query( mask, class ) ((*(mask).flags & (class))) |
| 297 | |
| 298 | #define GT_0trace( mask, class, format ) \ |
| 299 | ((*(mask).flags & (class)) ? \ |
| 300 | _GT_trace(&(mask), (format)) : 0) |
| 301 | |
| 302 | #define GT_1trace( mask, class, format, arg1 ) \ |
| 303 | ((*(mask).flags & (class)) ? \ |
| 304 | _GT_trace(&(mask), (format), (arg1)) : 0) |
| 305 | |
| 306 | #define GT_2trace( mask, class, format, arg1, arg2 ) \ |
| 307 | ((*(mask).flags & (class)) ? \ |
| 308 | _GT_trace(&(mask), (format), (arg1), (arg2)) : 0) |
| 309 | |
| 310 | #define GT_3trace( mask, class, format, arg1, arg2, arg3 ) \ |
| 311 | ((*(mask).flags & (class)) ? \ |
| 312 | _GT_trace(&(mask), (format), (arg1), (arg2), (arg3)) : 0) |
| 313 | |
| 314 | #define GT_4trace( mask, class, format, arg1, arg2, arg3, arg4 ) \ |
| 315 | ((*(mask).flags & (class)) ? \ |
| 316 | _GT_trace(&(mask), (format), (arg1), (arg2), (arg3), (arg4)) : 0) |
| 317 | |
| 318 | #define GT_5trace( mask, class, format, arg1, arg2, arg3, arg4, arg5 ) \ |
| 319 | ((*(mask).flags & (class)) ? \ |
| 320 | _GT_trace(&(mask), (format), (arg1), (arg2), (arg3), (arg4), (arg5)) : 0) |
| 321 | |
| 322 | #define GT_6trace( mask, class, format, arg1, arg2, arg3, arg4, arg5, arg6 ) \ |
| 323 | ((*(mask).flags & (class)) ? \ |
| 324 | _GT_trace(&(mask), (format), (arg1), (arg2), (arg3), (arg4), (arg5), \ |
| 325 | (arg6)) : 0) |
| 326 | |
| 327 | #endif /* GT_TRACE */ |
| 328 | |
| 329 | #endif /* _LINT_ */ |
| 330 | |
| 331 | #endif /* GTCE_ */ |
| 332 | |