windows-nt/Source/XPSP1/NT/net/rras/common/rtutils/wttrace.h
2020-09-26 16:20:57 +08:00

211 lines
6.2 KiB
C

#ifndef _WT_TRACE_H_
#define _WT_TRACE_H_
#define TRACEID WTG.g_TraceId
//
// constants and macros used for tracing
//
#define WT_TRACE_ANY ((DWORD)0xFFFF0000 | TRACE_USE_MASK)
#define WT_TRACE_ENTER ((DWORD)0x00010000 | TRACE_USE_MASK)
#define WT_TRACE_LEAVE ((DWORD)0x00020000 | TRACE_USE_MASK)
#define WT_TRACE_TIMER ((DWORD)0x00100000 | TRACE_USE_MASK)
#define WT_TRACE_RECEIVE ((DWORD)0x00200000 | TRACE_USE_MASK)
#define WT_TRACE_CS ((DWORD)0x00400000 | TRACE_USE_MASK)
#define WT_TRACE_EVENT ((DWORD)0x00800000 | TRACE_USE_MASK)
#define WT_TRACE_WT ((DWORD)0x01000000 | TRACE_USE_MASK)
#define WT_TRACE_START ((DWORD)0x02000000 | TRACE_USE_MASK)
#define WT_TRACE_STOP ((DWORD)0x04000000 | TRACE_USE_MASK)
#define WT_TRACE_WAIT_TIMER ((DWORD)0x10000000 | TRACE_USE_MASK)
#define WAIT_DBG 1
#if WAIT_DBG
#define ENTER_CRITICAL_SECTION(pcs, type, proc) \
TRACE2(CS,"----To enter %s in %s", type, proc); \
EnterCriticalSection(pcs); \
TRACE2(CS,"----Entered %s in %s", type, proc)
#define LEAVE_CRITICAL_SECTION(pcs, type, proc) \
TRACE2(CS,"----Left %s in %s", type, proc); \
LeaveCriticalSection(pcs)
#define WAIT_FOR_SINGLE_OBJECT( event, time, type, proc) \
TRACE2(EVENT, "++++To wait for singleObj %s in %s", type, proc); \
WaitForSingleObject(event, time); \
TRACE2(EVENT, "++++WaitForSingleObj returned %s in %s", type, proc)
#define SET_EVENT(event, type, proc) \
TRACE2(EVENT, "++++SetEvent %s in %s", type, proc); \
SetEvent(event)
#else
#define ENTER_CRITICAL_SECTION(pcs, type, proc) \
EnterCriticalSection(pcs)
#define LEAVE_CRITICAL_SECTION(pcs, type, proc) \
LeaveCriticalSection(pcs)
#define WAIT_FOR_SINGLE_OBJECT( event, time, type, proc) \
WaitForSingleObject(event, time)
#define SET_EVENT(event, type, proc) \
SetEvent(event)
#endif
#define TRACESTART() \
TRACEID = TraceRegister("WAIT_THREAD")
#define TRACESTOP() \
TraceDeregister(TRACEID)
#define ETRACE0(a) \
TracePrintfEx(TRACEID, WT_TRACE_ANY, a)
#define TRACE0(l,a) \
TracePrintfEx(TRACEID, WT_TRACE_ ## l, a)
#define TRACE1(l,a,b) \
TracePrintfEx(TRACEID, WT_TRACE_ ## l, a, b)
#define TRACE2(l,a,b,c) \
TracePrintfEx(TRACEID, WT_TRACE_ ## l, a, b, c)
#define TRACE3(l,a,b,c,d) \
TracePrintfEx(TRACEID, WT_TRACE_ ## l, a, b, c, d)
#define TRACE4(l,a,b,c,d,e) \
TracePrintfEx(TRACEID, WT_TRACE_ ## l, a, b, c, d, e)
#define TRACE5(l,a,b,c,d,e,f) \
TracePrintfEx(TRACEID, WT_TRACE_ ## l, a, b, c, d, e, f)
#define TRACEDUMP(l,a,b,c) \
TraceDumpEx(TRACEID,l,a,b,c,TRUE)
#define DBG2 0
#if DBG
#define TRACE_ENTER(str) \
TracePrintfEx(TRACEID, WT_TRACE_ENTER, str)
#define TRACE_LEAVE(str) \
TracePrintfEx(TRACEID, WT_TRACE_LEAVE, str)
#else
#define TRACE_ENTER(str)
#define TRACE_LEAVE(str)
#endif
//
// Event logging macros
//
#define LOGLEVEL WTG.g_LogLevel
#define LOGHANDLE WTG.g_LogHandle
#define LOGERR RouterLogError
#define LOGWARN RouterLogWarning
#define LOGINFO RouterLogInformation
#define LOGWARNDATA RouterLogWarningData
//
// constants used for logging
//
#define WT_LOGGING_NONE 0
#define WT_LOGGING_ERROR 1
#define WT_LOGGING_WARN 2
#define WT_LOGGING_INFO 3
// Error logging
#define LOGERR0(msg,err) \
if (LOGLEVEL >= WT_LOGGING_ERROR) \
LOGERR(LOGHANDLE,WTLOG_ ## msg,0,NULL,(err))
#define LOGERR1(msg,a,err) \
if (LOGLEVEL >= WT_LOGGING_ERROR) \
LOGERR(LOGHANDLE,WTLOG_ ## msg,1,&(a),(err))
#define LOGERR2(msg,a,b,err) \
if (LOGLEVEL >= WT_LOGGING_ERROR) { \
LPSTR _asz[2] = { (a), (b) }; \
LOGERR(LOGHANDLE,WTLOG_ ## msg,2,_asz,(err)); \
}
#define LOGERR3(msg,a,b,c,err) \
if (LOGLEVEL >= WT_LOGGING_ERROR) { \
LPSTR _asz[3] = { (a), (b), (c) }; \
LOGERR(LOGHANDLE,WTLOG_ ## msg,3,_asz,(err)); \
}
#define LOGERR4(msg,a,b,c,d,err) \
if (LOGLEVEL >= WT_LOGGING_ERROR) { \
LPSTR _asz[4] = { (a), (b), (c), (d) }; \
LOGERR(LOGHANDLE,WTLOG_ ## msg,4,_asz,(err)); \
}
// Warning logging
#define LOGWARN0(msg,err) \
if (LOGLEVEL >= WT_LOGGING_WARN) \
LOGWARN(LOGHANDLE,WTLOG_ ## msg,0,NULL,(err))
#define LOGWARN1(msg,a,err) \
if (LOGLEVEL >= WT_LOGGING_WARN) \
LOGWARN(LOGHANDLE,WTLOG_ ## msg,1,&(a),(err))
#define LOGWARN2(msg,a,b,err) \
if (LOGLEVEL >= WT_LOGGING_WARN) { \
LPSTR _asz[2] = { (a), (b) }; \
LOGWARN(LOGHANDLE,WTLOG_ ## msg,2,_asz,(err)); \
}
#define LOGWARN3(msg,a,b,c,err) \
if (LOGLEVEL >= WT_LOGGING_WARN) { \
LPSTR _asz[3] = { (a), (b), (c) }; \
LOGWARN(LOGHANDLE,WTLOG_ ## msg,3,_asz,(err)); \
}
#define LOGWARN4(msg,a,b,c,d,err) \
if (LOGLEVEL >= WT_LOGGING_WARN) { \
LPSTR _asz[4] = { (a), (b), (c), (d) }; \
LOGWARN(LOGHANDLE,WTLOG_ ## msg,4,_asz,(err)); \
}
#define LOGWARNDATA2(msg,a,b,dw,buf) \
if (LOGLEVEL >= WT_LOGGING_WARN) { \
LPSTR _asz[2] = { (a), (b) }; \
LOGWARNDATA(LOGHANDLE,WTLOG_ ## msg,2,_asz,(dw),(buf)); \
}
// Information logging
#define LOGINFO0(msg,err) \
if (LOGLEVEL >= WT_LOGGING_INFO) \
LOGINFO(LOGHANDLE,WTLOG_ ## msg,0,NULL,(err))
#define LOGINFO1(msg,a,err) \
if (LOGLEVEL >= WT_LOGGING_INFO) \
LOGINFO(LOGHANDLE,WTLOG_ ## msg,1,&(a),(err))
#define LOGINFO2(msg,a,b,err) \
if (LOGLEVEL >= WT_LOGGING_INFO) { \
LPSTR _asz[2] = { (a), (b) }; \
LOGINFO(LOGHANDLE,WTLOG_ ## msg,2,_asz,(err)); \
}
#define LOGINFO3(msg,a,b,c,err) \
if (LOGLEVEL >= WT_LOGGING_INFO) { \
LPSTR _asz[3] = { (a), (b), (c) }; \
LOGINFO(LOGHANDLE,WTLOG_ ## msg,3,_asz,(err)); \
}
#define LOGINFO4(msg,a,b,c,d,err) \
if (LOGLEVEL >= WT_LOGGING_INFO) { \
LPSTR _asz[4] = { (a), (b), (c), (d) }; \
LOGINFO(LOGHANDLE,WTLOG_ ## msg,4,_asz,(err)); \
}
#endif //_WT_TRACE_H_