windows-nt/Source/XPSP1/NT/net/atm/samples/atmsmpl/driver/atmsmdbg.h
2020-09-26 16:20:57 +08:00

247 lines
6.7 KiB
C

/*++
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