Files
m241Neelima/vxworks-6.9/target/h/dshm/debug/dshmDebug.h
T
2026-07-30 11:19:44 +05:30

228 lines
6.5 KiB
C

/* dshmDebug.h - dSHM console debugging output */
/*
* Copyright (c) 2006, 2010 Wind River Systems, Inc.
*
* The right to copy, distribute, modify or otherwise make use
* of this software may be licensed only pursuant to the terms
* of an applicable Wind River license agreement.
*/
/*
modification history
--------------------
01e,15jul10,gjj deprecated the DSHM technology and added deprecation macros.
01d,29apr10,pad Moved extern C statement after include statements.
01c,07sep06,bwa split, added debug levels; added timestamped version.
01b,29jul06,bwa added description;
moved some functionalities to a adaptation layer header file.
01a,05jul06,bwa written.
*/
#ifndef __INCdshmDebugh
#define __INCdshmDebugh
/* Sanity #defines for cases these weren't already defined in the file including
* this one. The way to use this file is to #define the followings to 1 if they
* are to be turned on for the file where this file is included. Then #include
* this file in the next line after the #define, eg. like this:
*
* (in dshmSvcFoo.c)
* [...]
* /@ turn on debugging but no extra debugging @/
* #define DSHM_DEBUG 1
* #define DSHM_EXTRA_DEBUG 0
* #include <dshm/debug/dshmDebug.h>
* [...]
*
*/
#ifndef DSHM_DEBUG
#define DSHM_DEBUG 0
#endif
#ifndef DSHM_EXTRA_DEBUG
#define DSHM_EXTRA_DEBUG 0
#endif
#ifndef DSHM_TIMESTAMP
#define DSHM_TIMESTAMP 0
#endif
#include <dshm/dshm.h>
#include <dshm/adapt/debug.h>
#ifdef __cplusplus
extern "C" {
#endif
extern void dshmDebugInit (const int debugLevel)
_WRS_DEPRECATED ("DSHM will be deprecated, you can use MIPC instead");
/* Debugging levels.
* Used as the first parameter to DSHMDBG() and IDSHMDBG(). For the output to
* be displayed, the chosen debugging level must be of higher or equal priority
* than the overall debugging level set in the system. The latter can be set by
* using the DSHM_INIT_DBG_LVL configuration parameter at configuration time. It
* can also be set programmatically and thus modified at a later time by setting
* the global variable 'dshmDebugLevel' to the desired level of output.
*
* WARNING: If the dSHM library is built with debugging support enabled and the
* global debugging level is set to VERBOSE, *lots* of debugging output will be
* displayed, with a high probability of disrupting system operation.
*
* Three debugging levels are provided for service usage: DSHMDBG_SVC_LO,
* DSHMDBG_SVC and DSHMDBG_SVC_HI, the latter being of the higher priority.
* Setting the global debugging output level to any of the DSHMDBG_SVC levels
* will also ouptut error conditions from the dSHM libraries if they were built
* with debugging enabled. Low-importance information will not be displayed.
*
* eg.
*
* void dshmSvcFooInit (void)
* {
* dshmDebugLevel = DSHMDBG_SVC;
* }
*
* int dshmSvcFooBlahVerify
* (
* const int blah
* )
* {
* /@ Display the value 'blah' is set to: if the level set in the Init()
* @ routine is not modified later on, it will not get displayed.
* @/
* DSHMDBG(DSHMDBG_SVC_LO, "Value of 'blah' = %d\n", blah);
*
* /@ Ensure user passed a 16-bit value @/
* if ((blah & 0xffff) != blah)
* {
* /@ Will get displayed with the level set in the Init() routine. The
* @ value of this debugging info was chosen to be higher than the one
* @ chosen to display the value of 'blah' since this is an error
* @ condition, and thus of higher importance for debugging.
* @/
* DSHMDBG(DSHMDBG_SVC_HI, "Value passed is too large!\n");
* return -1;
* }
* return 0;
* }
*/
#define DSHMDBG_UNUSED 0xe /* use this for debug output that impedes
* correct functionality but that might be
* turned on by changing the debug level to a
* higher one */
#define DSHMDBG_MAX 0xd
#define DSHMDBG_VERBOSE 0xc /* this is the lowest level dshmDebugLevel
* should be set to. */
#define DSHMDBG_INFO_LO 0xb
#define DSHMDBG_INFO 0xa
#define DSHMDBG_SVC_LO 0x9 /* use these for service debugging, to get */
#define DSHMDBG_SVC 0x8 /* service-specific debugging info and */
#define DSHMDBG_SVC_HI 0x7 /* possible important core dSHM debug info */
#define DSHMDBG_INFO_HI 0x6
#define DSHMDBG_WARNING 0x5
#define DSHMDBG_ERROR 0x4
#define DSHMDBG_CRIT 0x3
#define DSHMDBG_FATAL 0x2
#define DSHMDBG_TMP 0x1 /* debugging info that *must* be printed for
* current debugging, *has to* be changed to a
* lower debug level before getting put into
* codebase */
#define DSHMDBG_OFF 0x0
extern int dshmDebugLevel;
extern const char dshmDebugLevelStr[][32];
#if DSHM_DEBUG
/* regular debugging printout */
#if 1
#if DSHM_TIMESTAMP
#if 1
#define DSHMDBG(lvl, fmt, args...) \
do \
{ \
if (lvl <= dshmDebugLevel && lvl > DSHMDBG_OFF) \
{ \
DSHM_TIMESTAMP_INC(); \
DSHM_PRINT ( \
"[(%4.4x:%4.4x)%s@%d] " fmt, \
DSHM_TIMESTAMP_GET(0), \
DSHM_TIMESTAMP_GET(1), \
__FILE__, __LINE__, \
##args); \
} \
} \
while (0)
#else
#define DSHMDBG(lvl, fmt, args...) \
do \
{ \
if (lvl <= dshmDebugLevel && lvl > DSHMDBG_OFF) \
{ \
DSHM_TIMESTAMP_INC(); \
DSHM_PRINT ( \
"[<%s> %s@%d(%#x)] " fmt, \
dshmDebugLevelStr[lvl], __FILE__, __LINE__, \
DSHM_TIMESTAMP_GET(), \
##args); \
} \
} \
while (0)
#endif
#else
#define DSHMDBG(lvl, fmt, args...) \
do \
{ \
if (lvl <= dshmDebugLevel && lvl > DSHMDBG_OFF) \
{ \
DSHM_PRINT ( \
"[<%s> %s@%d] " fmt, \
dshmDebugLevelStr[lvl], __FILE__, __LINE__, \
##args); \
} \
} \
while (0)
#endif
#endif
/* interrupt-safe debugging printout */
#define DSHMDBGI(lvl, fmt, a, b, c) \
do \
{ \
if (lvl <= dshmDebugLevel && lvl > DSHMDBG_OFF) \
{ \
DSHM_IPRINT ("[<%s> %s@%d] " fmt, \
(int)dshmDebugLevelStr[lvl], (int)__FILE__, (int)__LINE__, \
(int)a, (int)b, (int)c); \
} \
} \
while (0)
/* support old style without level as a parameter */
#define DPRINTF(fmt, args...) \
DSHMDBG(DSHMDBG_VERBOSE, fmt, ##args)
#define IDPRINTF(fmt,a,b,c) \
DSHMDBGI(DSHMDBG_VERBOSE, fmt, a,b,c)
/* screen dump of a message's contents */
#define DSHM_MSG_DUMP(msg, align, level) dshmMsgDump(msg, align, level)
#else
#define DSHMDBG(lvl, fmt, args...)
#define DSHMDBGI(lvl, fmt, args...)
#define DPRINTF(fmt, args...)
#define IDPRINTF(fmt,a,b,c)
#define DSHM_MSG_DUMP(msg, align, level)
#endif
#ifdef __cplusplus
}
#endif
#endif /* __INCdshmDebugh */