|
|
/*++
Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved.
Module Name:
ATMSMDbg.h
Abstract:
Debug macros for ATMSMDRV
Author:
Anil Francis Thomas (10/98)
Environment:
Kernel
Revision History:
--*/
#ifndef _ATMSMDbg__H
#define _ATMSMDbg__H
#define MEMORY_TAG 'MSDN'
//
// The ID of each source section (Used as the first 28 bits of AtmSmDebugFlag)
//
#define MODULE_INIT 0x00000010
#define MODULE_ADAPTER 0x00000100
#define MODULE_CALLMGR 0x00000200
#define MODULE_WMI 0x00001000
#define MODULE_PACKET 0x00002000
#define MODULE_SEND 0x00010000
#define MODULE_RECV 0x00020000
#define MODULE_MISC 0x00100000
#define MODULE_REQUEST 0x00200000
#define MODULE_IOCTL 0x00400000
#define MODULE_DEBUG 0x10000000
#if DBG
// The value here defines what debug output you wants to see. The value is a
// combination of DebugLevel and the module IDs
// All messages in the specified modules with urgency lower than
// specified will be enabled.
extern UINT AtmSmDebugFlag;
//
// Message verbosity: lower values indicate higher urgency.
// (specified in the last 4 bits of AtmSmDebugFlag)
//
#define ATMSMD_VERY_LOUD 6
#define ATMSMD_IN_OUT 5
#define ATMSMD_LOUD 4
#define ATMSMD_INFO 3
#define ATMSMD_WARN 2
#define ATMSMD_ERR 1
#define ATMSMD_FATAL 0
#define DBG_LVL(DbgFlag) (DbgFlag & 0x0000000F)
#define CheckLockCount(Count) { \
\ if ((INT)(Count) < 0) { \ \ DbgPrint("Lock Count %d is < 0! File %s, Line %d\n", \ Count, __FILE__, __LINE__); \ DbgBreakPoint(); \ } \ }
#define ATMSMDebugP(Level, Fmt) { \
\ if((MODULE_ID & AtmSmDebugFlag) \ && (Level <= DBG_LVL(AtmSmDebugFlag))) { \ \ DbgPrint("** AtmSmDrv (0x%X): ", MODULE_ID ); \ DbgPrint Fmt; \ } \ }
#define DbgVeryLoud(Fmt) ATMSMDebugP(ATMSMD_VERY_LOUD, Fmt)
#define DbgInOut(Fmt) ATMSMDebugP(ATMSMD_IN_OUT, Fmt)
#define DbgLoud(Fmt) ATMSMDebugP(ATMSMD_LOUD, Fmt)
#define DbgInfo(Fmt) ATMSMDebugP(ATMSMD_INFO, Fmt)
#define DbgWarn(Fmt) ATMSMDebugP(ATMSMD_WARN, Fmt)
#define DbgErr(Fmt) ATMSMDebugP(ATMSMD_ERR, Fmt)
#define DbgFatal(Fmt) ATMSMDebugP(ATMSMD_FATAL, Fmt)
#define TraceIn(x) DbgInOut(("--> "#x"\n"))
#define TraceOut(x) DbgInOut(("<-- "#x"\n"))
//
// Memory Allocation/Freeing Auditing:
//
#define INIT_DONE_PATTERN 0x01020102
#define TRAILER_PATTERN 0x0A0B0C0D
//
// The ATMSMD_ALLOCATION structure stores all info about one AtmSmMemAlloc.
//
typedef struct _ATMSMD_ALLOCATION {
ULONG ulSignature; struct _ATMSMD_ALLOCATION *Next; struct _ATMSMD_ALLOCATION *Prev; ULONG ulModuleNumber; ULONG ulLineNumber; ULONG ulSize; union { ULONGLONG Alignment; UINT_PTR Location; // where the returned pointer was put
};
} ATMSMD_ALLOCATION, *PATMSMD_ALLOCATION;
typedef struct _ATMSMD_ALLOC_GLOBAL {
PATMSMD_ALLOCATION pAtmSmHead; PATMSMD_ALLOCATION pAtmSmTail; ULONG ulAtmSmAllocCount; NDIS_SPIN_LOCK AtmSmMemoryLock; ULONG ulAtmSmInitDonePattern;
} ATMSMD_ALLOC_GLOBAL, *PATMSMD_ALLOC_GLOBAL;
extern VOID AtmSmInitializeAuditMem( );
extern VOID AtmSmShutdownAuditMem( );
extern PVOID AtmSmAuditAllocMem ( PVOID *ppPointer, ULONG ulSize, ULONG ulModuleNumber, ULONG ulLineNumber );
extern VOID AtmSmAuditFreeMem( PVOID Pointer );
#define ATMSM_INITIALIZE_AUDIT_MEM() AtmSmInitializeAuditMem()
#define ATMSM_SHUTDOWN_AUDIT_MEM() AtmSmShutdownAuditMem()
#define AtmSmAllocMem(ppPointer, TYPE, Size) \
*ppPointer = (TYPE)AtmSmAuditAllocMem((PVOID *)ppPointer, Size, \ MODULE_ID, __LINE__)
#define AtmSmFreeMem(pPointer) AtmSmAuditFreeMem((PVOID)pPointer)
VOID PrintATMAddr( IN char *pStr, IN PATM_ADDRESS pAtmAddr );
#define DumpATMAddress(Level, Str, Addr) { \
\ if((MODULE_ID & AtmSmDebugFlag) \ && (Level <= DBG_LVL(AtmSmDebugFlag))) { \ \ PrintATMAddr(Str,Addr); \ } \ }
#define ATMSM_GET_ENTRY_IRQL(_Irql) \
_Irql = KeGetCurrentIrql() #define ATMSM_CHECK_EXIT_IRQL(_EntryIrql, _ExitIrql) \
{ \ _ExitIrql = KeGetCurrentIrql(); \ if (_ExitIrql != _EntryIrql) \ { \ DbgPrint("File %s, Line %d, Exit IRQ %d != Entry IRQ %d\n", \ __FILE__, __LINE__, _ExitIrql, _EntryIrql); \ DbgBreakPoint(); \ } \ }
#else // DBG
//
// No debug
//
#define ATMSM_INITIALIZE_AUDIT_MEM()
#define ATMSM_SHUTDOWN_AUDIT_MEM()
#define AtmSmAllocMem(ppPointer, TYPE, Size) \
NdisAllocateMemoryWithTag((PVOID *)ppPointer, (ULONG)Size, \ (ULONG)MEMORY_TAG)
#define AtmSmFreeMem(pPointer) NdisFreeMemory((PVOID)(pPointer), 0, 0)
#define CheckLockCount(Count)
#define DbgVeryLoud(Fmt)
#define DbgInOut(Fmt)
#define DbgLoud(Fmt)
#define DbgInfo(Fmt)
#define DbgWarn(Fmt)
#define DbgErr(Fmt)
#define DbgFatal(Fmt)
#define TraceIn(x)
#define TraceOut(x)
#define DumpATMAddress(Level, Str, Addr)
#define ATMSM_GET_ENTRY_IRQL(Irql)
#define ATMSM_CHECK_EXIT_IRQL(EntryIrql, ExitIrql)
#endif // DBG
#endif // _AtmSmDbg__H
|