|
|
/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
debug.h
Abstract:
Debug macros for the ATM/ARP module
Revision History:
Who When What -------- -------- ---------------------------------------------- arvindm 06-13-96 created based on Call Manager debug.h
Notes:
--*/
#ifndef _AADEBUG__H
#define _AADEBUG__H
//
// Message verbosity: lower values indicate higher urgency
//
#define AAD_EXTRA_LOUD 20
#define AAD_VERY_LOUD 10
#define AAD_LOUD 8
#define AAD_INFO 6
#define AAD_WARNING 4
#define AAD_ERROR 2
#define AAD_FATAL 0
//
// Data traffic debug message flags
//
#define AAD_DATA_IN 0x01
#define AAD_DATA_OUT 0x02
#define AAD_TRACK_BIG_SENDS 0x04
#ifdef PERF
typedef struct _AAD_SEND_LOG_ENTRY { ULONG Flags; PNDIS_PACKET pNdisPacket; ULONG Destination; ULONG Length; LARGE_INTEGER SendTime; LARGE_INTEGER SendCompleteTime; } AAD_SEND_LOG_ENTRY, *PAAD_SEND_LOG_ENTRY;
#define AAD_SEND_FLAG_UNUSED 0x00000000
#define AAD_SEND_FLAG_WAITING_COMPLETION 0x00000001
#define AAD_SEND_FLAG_COMPLETED 0x00000002
#define AAD_SEND_FLAG_RCE_GIVEN 0x00000100
extern VOID AadLogSendStart( IN PNDIS_PACKET pNdisPacket, IN ULONG Destination, IN PVOID pRCE );
extern VOID AadLogSendUpdate( IN PNDIS_PACKET pNdisPacket );
extern VOID AadLogSendComplete( IN PNDIS_PACKET pNdisPacket );
extern VOID AadLogSendAbort( IN PNDIS_PACKET pNdisPacket );
extern LARGE_INTEGER TimeFrequency;
#endif // PERF
#if DBG_SPIN_LOCK
typedef struct _ATMARP_LOCK { ULONG Signature; ULONG IsAcquired; PKTHREAD OwnerThread; ULONG TouchedByFileNumber; ULONG TouchedInLineNumber; NDIS_SPIN_LOCK NdisLock; } ATMARP_LOCK, *PATMARP_LOCK;
#define AAL_SIG 'KCOL'
extern VOID AtmArpAllocateSpinLock( IN PATMARP_LOCK pLock, IN ULONG FileNumber, IN ULONG LineNumber );
extern VOID AtmArpAcquireSpinLock( IN PATMARP_LOCK pLock, IN ULONG FileNumber, IN ULONG LineNumber );
extern VOID AtmArpReleaseSpinLock( IN PATMARP_LOCK pLock, IN ULONG FileNumber, IN ULONG LineNumber );
#define CHECK_LOCK_COUNT(Count) \
{ \ if ((INT)(Count) < 0) \ { \ DbgPrint("Lock Count %d is < 0! File %s, Line %d\n", \ Count, __FILE__, __LINE__); \ DbgBreakPoint(); \ } \ } #else
#define CHECK_LOCK_COUNT(Count)
#define ATMARP_LOCK NDIS_SPIN_LOCK
#define PATMARP_LOCK PNDIS_SPIN_LOCK
#endif // DBG_SPIN_LOCK
#if DBG
extern INT AaDebugLevel; // the value here defines what the user wants to see
// all messages with this urgency and higher are enabled
extern INT AaMcDebugLevel; extern INT AaDataDebugLevel; extern INT AadBigDataLength;
#define AADEBUGP(lev, stmt) \
{ if ((lev) <= AaDebugLevel) { DbgPrint("AtmArpC: "); DbgPrint stmt; }}
#define AADEBUGPDUMP(lev, pBuf, Len) \
{ if ((lev) <= AaDebugLevel) { DbgPrintHexDump((PUCHAR)(pBuf), (ULONG)(Len)); }}
#define AADEBUGPATMADDR(lev, pString, pAddr) \
{ if ((lev) <= AaDebugLevel) { DbgPrintAtmAddr(pString, pAddr); } }
#define AADEBUGPMAP(lev, pString, pIpAddr, pAtmAddr) \
{ if ((lev) <= AaDebugLevel) { DbgPrintMapping(pString, (PUCHAR)pIpAddr, pAtmAddr); } }
#define AAMCDEBUGP(lev, stmt) \
{ if ((lev) <= AaMcDebugLevel) { DbgPrint("AtmArpC: "); DbgPrint stmt; }}
#define AAMCDEBUGPDUMP(lev, pBuf, Len) \
{ if ((lev) <= AaMcDebugLevel) { DbgPrintHexDump((PUCHAR)(pBuf), (ULONG)(Len)); }}
#define AAMCDEBUGPATMADDR(lev, pString, pAddr) \
{ if ((lev) <= AaMcDebugLevel) { DbgPrintAtmAddr(pString, pAddr); } }
#define AAMCDEBUGPMAP(lev, pString, pIpAddr, pAtmAddr) \
{ if ((lev) <= AaMcDebugLevel) { DbgPrintMapping(pString, (PUCHAR)pIpAddr, pAtmAddr); } }
#define AA_ASSERT(exp) \
{ if (!(exp)) { DbgPrint("ATMARPC: assert " #exp " failed in file %s, line %d\n", __FILE__, __LINE__); DbgBreakPoint(); } }
#define AA_STRUCT_ASSERT(s, t)\
if ((s)->t##_sig != t##_signature) {\ DbgPrint("Structure assertion failure for type " #t " in file %s, line %d\n", __FILE__, __LINE__); \ DbgBreakPoint(); \ }
#if DBG_CO_SEND
#define NDIS_CO_SEND_PACKETS(_VcHandle, _PktArray, _Count) \
AaCoSendPackets(_VcHandle, _PktArray, _Count)
#else
#define NDIS_CO_SEND_PACKETS(_VcHandle, _PktArray, _Count) \
NdisCoSendPackets(_VcHandle, _PktArray, _Count)
#endif // DBG_CO_SEND
extern INT AaSkipAll; // Used as an emergency exit mechanism!
//
// Memory Allocation/Freeing Audit:
//
//
// The AAD_ALLOCATION structure stores all info about one allocation
//
typedef struct _AAD_ALLOCATION {
ULONG Signature; struct _AAD_ALLOCATION *Next; struct _AAD_ALLOCATION *Prev; ULONG FileNumber; ULONG LineNumber; ULONG Size; PVOID Location; // where the returned pointer was put
union { ULONGLONG Alignment; UCHAR UserData; };
} AAD_ALLOCATION, *PAAD_ALLOCATION;
#define AAD_MEMORY_SIGNATURE (ULONG)'CSII'
extern PVOID AaAuditAllocMem ( PVOID pPointer, ULONG Size, ULONG FileNumber, ULONG LineNumber );
extern VOID AaAuditFreeMem( PVOID Pointer );
extern VOID AaAuditShutdown( VOID );
extern VOID DbgPrintHexDump( PUCHAR pBuffer, ULONG Length );
extern VOID DbgPrintAtmAddr( PCHAR pString, ATM_ADDRESS UNALIGNED * pAddr );
extern VOID DbgPrintMapping( PCHAR pString, UCHAR UNALIGNED * pIpAddr, ATM_ADDRESS UNALIGNED * pAddr );
extern VOID AaCoSendPackets( IN NDIS_HANDLE NdisVcHandle, IN PNDIS_PACKET * PacketArray, IN UINT PacketCount );
#else
//
// No debug
//
#define AADEBUGP(lev, stmt)
#define AADEBUGPDUMP(lev, pBuf, Len)
#define AADEBUGPATMADDR(lev, pString, pAddr)
#define AADEBUGPMAP(lev, pString, pIpAddr, pAtmAddr)
#define AAMCDEBUGP(lev, stmt)
#define AAMCDEBUGPDUMP(lev, pBuf, Len)
#define AAMCDEBUGPATMADDR(lev, pString, pAddr)
#define AAMCDEBUGPMAP(lev, pString, pIpAddr, pAtmAddr)
#define AA_ASSERT(exp)
#define AA_STRUCT_ASSERT(s, t)
#define NDIS_CO_SEND_PACKETS(_VcHandle, _PktArray, _Count) \
NdisCoSendPackets(_VcHandle, _PktArray, _Count)
#endif // DBG
#if DBG
#define AA_REF_AE(_pAE, _RefType) \
AtmArpReferenceAtmEntryEx(_pAE, _RefType) #define AA_DEREF_AE(_pAE, _RefType) \
AtmArpDereferenceAtmEntryEx(_pAE, _RefType, TRUE) #define AA_DEREF_AE_NO_DELETE(_pAE, _RefType) \
AtmArpDereferenceAtmEntryEx(_pAE, _RefType, FALSE) #define AA_REF_IE(_pIE, _RefType) \
AtmArpReferenceIPEntryEx(_pIE, _RefType) #define AA_DEREF_IE(_pIE, _RefType) \
AtmArpDereferenceIPEntryEx(_pIE, _RefType, TRUE) #define AA_DEREF_IE_NO_DELETE(_pIE, _RefType) \
AtmArpDereferenceIPEntryEx(_pIE, _RefType, FALSE)
#define AA_SWITCH_IE_REFTYPE(_pIE, _FromRefType, _ToRefType) \
( AtmArpReferenceIPEntryEx(_pIE, _ToRefType) \ ,AtmArpDereferenceIPEntryEx(_pIE, _FromRefType, FALSE))
#define AA_REF_JE(_pJE) \
AtmArpReferenceJoinEntryEx(_pJE, (_FILENUMBER << 16) | __LINE__) #define AA_DEREF_JE(_pJE) \
AtmArpDereferenceJoinEntryEx(_pJE, (_FILENUMBER << 16) | __LINE__)
#else // !DBG
#define AA_REF_AE(_pAE, _RefType) \
AtmArpReferenceAtmEntry(_pAE) #define AA_DEREF_AE(_pAE, _RefType) \
AtmArpDereferenceAtmEntry(_pAE) #define AA_DEREF_AE_NO_DELETE(_pAE, _RefType) \
((_pAE)->RefCount--)
#define AA_REF_IE(_pIE, _RefType) \
AtmArpReferenceIPEntry(_pIE) #define AA_DEREF_IE(_pIE, _RefType) \
AtmArpDereferenceIPEntry(_pIE) #define AA_DEREF_IE_NO_DELETE(_pIE, _RefType) \
((_pIE)->RefCount--) #define AA_SWITCH_IE_REFTYPE(_pIE, _FromRefType, _ToRefType) \
((void)(0))
#define AA_REF_JE(_pJE) \
AtmArpReferenceJoinEntry(_pJE) #define AA_DEREF_JE(_pJE) \
AtmArpDereferenceJoinEntry(_pJE)
#endif // !DBG
#if DBG
#define AA_CHECK_TIMER_IN_ACTIVE_LIST(_pTimer, _pIf, _pStruct, _pName) \
AtmArpCheckIfTimerIsInActiveList( \ _pTimer, \ _pIf, \ _pStruct, \ _pName \ )
#else
#define AA_CHECK_TIMER_IN_ACTIVE_LIST(_pTimer, _pIf, _pStruct, _pName)
#endif // DBG
#endif // _AADEBUG__H
|