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 48struct GT_Config { 49 Fxn PRINTFXN; 50 Fxn PIDFXN; 51 Fxn TIDFXN; 52 Fxn ERRORFXN; 53}; 54 55extern struct GT_Config *GT; 56 57struct 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 */ 102Void 103GT_assert(struct GT_Mask mask, Int expr) 104{ 105} 106 107/* 108 * ======== GT_config ======== 109 */ 110/* ARGSUSED */ 111Void 112GT_config(struct GT_Config config) 113{ 114} 115 116/* 117 * ======== GT_create ======== 118 */ 119/* ARGSUSED */ 120Void 121GT_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 */ 135MdUns 136GT_curLine(Void) 137{ 138 return ((MdUns) NULL); 139} 140 141/* 142 * ======== GT_exit ======== 143 */ 144/* ARGSUSED */ 145Void 146GT_exit(Void) 147{ 148} 149 150/* 151 * ======== GT_init ======== 152 */ 153/* ARGSUSED */ 154Void 155GT_init(Void) 156{ 157} 158 159/* 160 * ======== GT_query ======== 161 */ 162/* ARGSUSED */ 163bool 164GT_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 */ 175Void 176GT_set(String settings) 177{ 178} 179 180/* 181 * ======== GT_setprintf ======== 182 * sets printf function 183 */ 184 185/* ARGSUSED */ 186Void 187GT_setprintf(Fxn fxn) 188{ 189} 190 191/* ARGSUSED */ 192Void 193GT_0trace(struct GT_Mask mask, SmBits class, String format) 194{ 195} 196 197/* ARGSUSED */ 198Void 199GT_1trace(struct GT_Mask mask, SmBits class, String format, ...) 200{ 201} 202 203/* ARGSUSED */ 204Void 205GT_2trace(struct GT_Mask mask, SmBits class, String format, ...) 206{ 207} 208 209/* ARGSUSED */ 210Void 211GT_3trace(struct GT_Mask mask, SmBits class, String format, ...) 212{ 213} 214 215/* ARGSUSED */ 216Void 217GT_4trace(struct GT_Mask mask, SmBits class, String format, ...) 218{ 219} 220 221/* ARGSUSED */ 222Void 223GT_5trace(struct GT_Mask mask, SmBits class, String format, ...) 224{ 225} 226 227/* ARGSUSED */ 228Void 229GT_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 237extern Void _GT_create(struct GT_Mask * mask, String modName); 238 239#define GT_exit() 240 241extern Void GT_init(Void); 242extern Void _GT_set(String str); 243extern 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 254extern 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 288extern String GT_format; 289extern 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 333