Home | History | Annotate | Download | only in inc
      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 
    333