332 lines
7.5 KiB
C
332 lines
7.5 KiB
C
/*
|
|
* Copyright 2001-2008 Texas Instruments - http://www.ti.com/
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
|
|
/*
|
|
* ======== gt.h ========
|
|
* Purpose:
|
|
* There are two definitions that affect which portions of trace
|
|
* are acutally compiled into the client: GT_TRACE and GT_ASSERT. If
|
|
* GT_TRACE is set to 0 then all trace statements (except for assertions)
|
|
* will be compiled out of the client. If GT_ASSERT is set to 0 then
|
|
* assertions will be compiled out of the client. GT_ASSERT can not be
|
|
* set to 0 unless GT_TRACE is also set to 0 (i.e. GT_TRACE == 1 implies
|
|
* GT_ASSERT == 1).
|
|
*
|
|
*! Revision History
|
|
*! ================
|
|
*! 02-Feb-2000 rr: Renamed this file to gtce.h. GT CLASS and trace definitions
|
|
*! are WinCE Specific.
|
|
*! 03-Jan-1997 ge Replaced "GT_" prefix to GT_Config structure members
|
|
*! to eliminate preprocessor confusion with other macros.
|
|
*/
|
|
|
|
#ifndef GT_
|
|
#define GT_
|
|
|
|
#ifndef GT_TRACE
|
|
#define GT_TRACE 0 /* 0 = "trace compiled out"; 1 = "trace active" */
|
|
#endif
|
|
|
|
#if !defined(GT_ASSERT) || GT_TRACE
|
|
#define GT_ASSERT 1
|
|
#endif
|
|
|
|
struct GT_Config {
|
|
Fxn PRINTFXN;
|
|
Fxn PIDFXN;
|
|
Fxn TIDFXN;
|
|
Fxn ERRORFXN;
|
|
};
|
|
|
|
extern struct GT_Config *GT;
|
|
|
|
struct GT_Mask {
|
|
String modName;
|
|
SmBits *flags;
|
|
} ;
|
|
|
|
/*
|
|
* New GT Class defenitions.
|
|
*
|
|
* The following are the explanations and how it could be used in the code
|
|
*
|
|
* - GT_ENTER On Entry to Functions
|
|
*
|
|
* - GT_1CLASS Display level of debugging status- Object/Automatic
|
|
* variables
|
|
* - GT_2CLASS ---- do ----
|
|
*
|
|
* - GT_3CLASS ---- do ---- + It can be used(recommended) for debug
|
|
status in the ISR, IST
|
|
* - GT_4CLASS ---- do ----
|
|
*
|
|
* - GT_5CLASS Display entry for module init/exit functions
|
|
*
|
|
* - GT_6CLASS Warn whenever SERVICES function fails
|
|
*
|
|
* - GT_7CLASS Warn failure of Critical failures
|
|
*
|
|
*/
|
|
|
|
#define GT_ENTER ((SmBits)0x01)
|
|
#define GT_1CLASS ((SmBits)0x02)
|
|
#define GT_2CLASS ((SmBits)0x04)
|
|
#define GT_3CLASS ((SmBits)0x08)
|
|
#define GT_4CLASS ((SmBits)0x10)
|
|
#define GT_5CLASS ((SmBits)0x20)
|
|
#define GT_6CLASS ((SmBits)0x40)
|
|
#define GT_7CLASS ((SmBits)0x80)
|
|
|
|
#ifdef _LINT_
|
|
|
|
/* LINTLIBRARY */
|
|
|
|
/*
|
|
* ======== GT_assert ========
|
|
*/
|
|
/* ARGSUSED */
|
|
Void
|
|
GT_assert(struct GT_Mask mask, Int expr)
|
|
{
|
|
}
|
|
|
|
/*
|
|
* ======== GT_config ========
|
|
*/
|
|
/* ARGSUSED */
|
|
Void
|
|
GT_config(struct GT_Config config)
|
|
{
|
|
}
|
|
|
|
/*
|
|
* ======== GT_create ========
|
|
*/
|
|
/* ARGSUSED */
|
|
Void
|
|
GT_create(struct GT_Mask * mask /* OUT */ , String modName)
|
|
{
|
|
}
|
|
|
|
/*
|
|
* ======== GT_curLine ========
|
|
* Purpose:
|
|
* Returns the current source code line number. Is useful for performing
|
|
* branch testing using trace. For example,
|
|
*
|
|
* GT_1trace(curTrace, GT_1CLASS,
|
|
* "in module XX_mod, executing line %u\n", GT_curLine());
|
|
*/
|
|
/* ARGSUSED */
|
|
MdUns
|
|
GT_curLine(Void)
|
|
{
|
|
return ((MdUns) NULL);
|
|
}
|
|
|
|
/*
|
|
* ======== GT_exit ========
|
|
*/
|
|
/* ARGSUSED */
|
|
Void
|
|
GT_exit(Void)
|
|
{
|
|
}
|
|
|
|
/*
|
|
* ======== GT_init ========
|
|
*/
|
|
/* ARGSUSED */
|
|
Void
|
|
GT_init(Void)
|
|
{
|
|
}
|
|
|
|
/*
|
|
* ======== GT_query ========
|
|
*/
|
|
/* ARGSUSED */
|
|
bool
|
|
GT_query(struct GT_Mask mask, SmBits class)
|
|
{
|
|
return (false);
|
|
}
|
|
|
|
/*
|
|
* ======== GT_set ========
|
|
* sets trace mask according to settings
|
|
*/
|
|
|
|
/* ARGSUSED */
|
|
Void
|
|
GT_set(String settings)
|
|
{
|
|
}
|
|
|
|
/*
|
|
* ======== GT_setprintf ========
|
|
* sets printf function
|
|
*/
|
|
|
|
/* ARGSUSED */
|
|
Void
|
|
GT_setprintf(Fxn fxn)
|
|
{
|
|
}
|
|
|
|
/* ARGSUSED */
|
|
Void
|
|
GT_0trace(struct GT_Mask mask, SmBits class, String format)
|
|
{
|
|
}
|
|
|
|
/* ARGSUSED */
|
|
Void
|
|
GT_1trace(struct GT_Mask mask, SmBits class, String format, ...)
|
|
{
|
|
}
|
|
|
|
/* ARGSUSED */
|
|
Void
|
|
GT_2trace(struct GT_Mask mask, SmBits class, String format, ...)
|
|
{
|
|
}
|
|
|
|
/* ARGSUSED */
|
|
Void
|
|
GT_3trace(struct GT_Mask mask, SmBits class, String format, ...)
|
|
{
|
|
}
|
|
|
|
/* ARGSUSED */
|
|
Void
|
|
GT_4trace(struct GT_Mask mask, SmBits class, String format, ...)
|
|
{
|
|
}
|
|
|
|
/* ARGSUSED */
|
|
Void
|
|
GT_5trace(struct GT_Mask mask, SmBits class, String format, ...)
|
|
{
|
|
}
|
|
|
|
/* ARGSUSED */
|
|
Void
|
|
GT_6trace(struct GT_Mask mask, SmBits class, String format, ...)
|
|
{
|
|
}
|
|
|
|
#else
|
|
|
|
#define GT_BOUND 26 /* 26 letters in alphabet */
|
|
|
|
extern Void _GT_create(struct GT_Mask * mask, String modName);
|
|
|
|
#define GT_exit()
|
|
|
|
extern Void GT_init(Void);
|
|
extern Void _GT_set(String str);
|
|
extern Int _GT_trace(struct GT_Mask * mask, String format, ...);
|
|
|
|
#if GT_ASSERT == 0
|
|
|
|
#define GT_assert( mask, expr )
|
|
#define GT_config( config )
|
|
#define GT_configInit( config )
|
|
#define GT_seterror( fxn )
|
|
|
|
#else
|
|
|
|
extern struct GT_Config _GT_params;
|
|
|
|
#define GT_assert( mask, expr ) \
|
|
(!(expr) ? \
|
|
(*GT->ERRORFXN)("assertion violation: %s, line %d\n", \
|
|
__FILE__, __LINE__), NULL : NULL)
|
|
|
|
#define GT_config( config ) (_GT_params = *(config))
|
|
#define GT_configInit( config ) (*(config) = _GT_params)
|
|
#define GT_seterror( fxn ) (_GT_params.ERRORFXN = (Fxn)(fxn))
|
|
|
|
#endif
|
|
|
|
#if GT_TRACE == 0
|
|
|
|
#define GT_curLine() ((MdUns)__LINE__)
|
|
#define GT_create(mask, modName)
|
|
#define GT_exit()
|
|
#define GT_init()
|
|
#define GT_set( settings )
|
|
#define GT_setprintf( fxn )
|
|
|
|
#define GT_query( mask, class ) false
|
|
|
|
#define GT_0trace( mask, class, format )
|
|
#define GT_1trace( mask, class, format, arg1 )
|
|
#define GT_2trace( mask, class, format, arg1, arg2 )
|
|
#define GT_3trace( mask, class, format, arg1, arg2, arg3 )
|
|
#define GT_4trace( mask, class, format, arg1, arg2, arg3, arg4 )
|
|
#define GT_5trace( mask, class, format, arg1, arg2, arg3, arg4, arg5 )
|
|
#define GT_6trace( mask, class, format, arg1, arg2, arg3, arg4, arg5, arg6 )
|
|
|
|
#else /* GT_TRACE == 1 */
|
|
|
|
extern String GT_format;
|
|
extern SmBits *GT_tMask[GT_BOUND];
|
|
|
|
#define GT_create(mask, modName) _GT_create((mask), (modName))
|
|
#define GT_curLine() ((MdUns)__LINE__)
|
|
#define GT_set( settings ) _GT_set( settings )
|
|
#define GT_setprintf( fxn ) (_GT_params.PRINTFXN = (Fxn)(fxn))
|
|
|
|
#define GT_query( mask, class ) ((*(mask).flags & (class)))
|
|
|
|
#define GT_0trace( mask, class, format ) \
|
|
((*(mask).flags & (class)) ? \
|
|
_GT_trace(&(mask), (format)) : 0)
|
|
|
|
#define GT_1trace( mask, class, format, arg1 ) \
|
|
((*(mask).flags & (class)) ? \
|
|
_GT_trace(&(mask), (format), (arg1)) : 0)
|
|
|
|
#define GT_2trace( mask, class, format, arg1, arg2 ) \
|
|
((*(mask).flags & (class)) ? \
|
|
_GT_trace(&(mask), (format), (arg1), (arg2)) : 0)
|
|
|
|
#define GT_3trace( mask, class, format, arg1, arg2, arg3 ) \
|
|
((*(mask).flags & (class)) ? \
|
|
_GT_trace(&(mask), (format), (arg1), (arg2), (arg3)) : 0)
|
|
|
|
#define GT_4trace( mask, class, format, arg1, arg2, arg3, arg4 ) \
|
|
((*(mask).flags & (class)) ? \
|
|
_GT_trace(&(mask), (format), (arg1), (arg2), (arg3), (arg4)) : 0)
|
|
|
|
#define GT_5trace( mask, class, format, arg1, arg2, arg3, arg4, arg5 ) \
|
|
((*(mask).flags & (class)) ? \
|
|
_GT_trace(&(mask), (format), (arg1), (arg2), (arg3), (arg4), (arg5)) : 0)
|
|
|
|
#define GT_6trace( mask, class, format, arg1, arg2, arg3, arg4, arg5, arg6 ) \
|
|
((*(mask).flags & (class)) ? \
|
|
_GT_trace(&(mask), (format), (arg1), (arg2), (arg3), (arg4), (arg5), \
|
|
(arg6)) : 0)
|
|
|
|
#endif /* GT_TRACE */
|
|
|
|
#endif /* _LINT_ */
|
|
|
|
#endif /* GTCE_ */
|
|
|