|
|
/*++
Copyright (c) 1995-1998 Microsoft Corporation
Module Name:
RcaDebug.h
Abstract:
Debug macros for RCA
Revision History:
Who When What -------- -------- ---------------------------------------------- rmachin 2-18-97 created -- after ArvindM's cmadebug.h JameelH 4-18-98 Cleanup
Notes:
--*/
#ifndef _RCADebug__H
#define _RCADebug__H
//
// Message verbosity: lower values indicate higher urgency
//
#define RCA_VERY_LOUD 10
#define RCA_LOUD 8
#define RCA_INFO 6
#define RCA_WARNING 4
#define RCA_ERROR 2
#define RCA_LOCKS 1
#define RCA_FATAL 0
#ifdef PERF
extern LARGE_INTEGER PerfTimeConnRequest; extern LARGE_INTEGER PerfTimeSetupSent; extern LARGE_INTEGER PerfTimeConnectReceived; extern LARGE_INTEGER PerfTimeConnConfirm;
extern LARGE_INTEGER PerfTimeSetupReceived; extern LARGE_INTEGER PerfTimeConnIndication; extern LARGE_INTEGER PerfTimeConnResponse; extern LARGE_INTEGER PerfTimeConnectSent;
extern LARGE_INTEGER PerfTimeFrequency;
#endif // PERF
extern ULONG g_ulHardcodeDataFormat; extern ULONG g_ulBufferSize;
#if DBG
#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)
#endif
#if DBG
extern INT RCADebugLevel; // the value here defines what the user wants to see
// all messages with this urgency and lower are enabled
#define RCADEBUGP(Level, Fmt) \
{ \ if (Level <= RCADebugLevel) \ { \ DbgPrint("***RCA*** (%x, %d) ", \ MODULE_NUMBER >> 16, __LINE__); \ DbgPrint Fmt; \ } \ }
#define RCADEBUGPSTOP(Level, Fmt) \
{ \ RCADEBUGP(Level, Fmt); \ DbgBreakPoint(); \ }
#define ACQUIRE_SPIN_LOCK(lock) \
{ \ NdisAcquireSpinLock(lock); \ if (RCADebugLevel == RCA_LOCKS) {\ DbgPrint("LOCK %s (0x%x) ACQUIRED, OldIrql set to %d at module %x, line %d\n", #lock, lock, (lock)->OldIrql, MODULE_NUMBER >> 16, __LINE__); \ }\ }
#define RELEASE_SPIN_LOCK(lock) \
{ \ if (RCADebugLevel == RCA_LOCKS) {\ DbgPrint("About to RELEASE LOCK %s (0x%x) and restore old IRQL %d\n", #lock, lock, (lock)->OldIrql);\ } \ NdisReleaseSpinLock(lock); \ if (RCADebugLevel == RCA_LOCKS) {\ DbgPrint("LOCK %s (0x%x) RELEASED at module %x, line %d\n", #lock, lock, MODULE_NUMBER >> 16, __LINE__);\ } \ }
#define DPR_ACQUIRE_SPIN_LOCK(lock) \
{ \ NdisDprAcquireSpinLock(lock); \ if (RCADebugLevel == RCA_LOCKS) { \ DbgPrint("LOCK %s (0x%x) ACQUIRED (DPC) at module %x, line %d\n", \ #lock, lock, MODULE_NUMBER >> 16, __LINE__); \
} \ }
#define DPR_RELEASE_SPIN_LOCK(lock) \
{ \ NdisDprReleaseSpinLock(lock); \ if (RCADebugLevel == RCA_LOCKS) {\ DbgPrint("LOCK %s (0x%x) RELEASED (DPC) at module %x, line %d\n", \ #lock, lock, MODULE_NUMBER >> 16, __LINE__); \
} \ }
#ifdef PERF
#define RCAAssert(exp)
#else
//#define RCAAssert(exp) PxAssert(exp)
// For now, just defin this to nothing.
#define RCAAssert(exp)
#endif // PERF
//#define RCAStructAssert(s, t) PxStructAssert(s, t)
// For now, just define this to nothing.
#define RCAStructAssert(s, t)
#else
//
// No debug
//
#define RCADEBUGP(lev, stmt)
#define RCAAssert(exp)
#define RCAStructAssert(s, t)
#define ACQUIRE_SPIN_LOCK(lock) NdisAcquireSpinLock(lock);
#define RELEASE_SPIN_LOCK(lock) NdisReleaseSpinLock(lock);
#define DPR_ACQUIRE_SPIN_LOCK(lock) NdisDprAcquireSpinLock(lock);
#define DPR_RELEASE_SPIN_LOCK(lock) NdisDprReleaseSpinLock(lock);
#endif // DBG
#if DBG
#undef AUDIT_MEM
#define AUDIT_MEM 1
#endif
#if AUDIT_MEM
//
// Memory Allocation/Freeing Auditing:
//
//
// The RCA_ALLOCATION structure stores all info about one CmaMemAlloc.
//
typedef struct _RCA_ALLOCATION { ULONG Signature; struct _RCA_ALLOCATION* Next; struct _RCA_ALLOCATION* Prev; ULONG FileNumber; ULONG LineNumber; ULONG Size; ULONG_PTR Location; // where the returned pointer was put
UCHAR UserData; } RCA_ALLOCATION, *PRCA_ALLOCATION;
#define RCA_MEMORY_SIGNATURE (ULONG)'FACR'
extern PVOID RCAAuditAllocMem ( IN PVOID pPointer, IN ULONG Size, IN ULONG FileNumber, IN ULONG LineNumber );
extern VOID RCAAuditFreeMem( IN PVOID Pointer );
#endif // AUDIT_MEM
#endif // _RCADebug__H
|