diff options
Diffstat (limited to '')
-rw-r--r-- | private/ntos/ndis/ndis40/ndisdbg.h | 270 |
1 files changed, 270 insertions, 0 deletions
diff --git a/private/ntos/ndis/ndis40/ndisdbg.h b/private/ntos/ndis/ndis40/ndisdbg.h new file mode 100644 index 000000000..eadfefcc3 --- /dev/null +++ b/private/ntos/ndis/ndis40/ndisdbg.h @@ -0,0 +1,270 @@ +/*++ + +Copyright (c) 1990-1995 Microsoft Corporation + +Module Name: + + ndisdbg.h + +Abstract: + + NDIS wrapper definitions + +Author: + + +Environment: + + Kernel mode, FSD + +Revision History: + + Jul-14 Kyle Brandon Added debug supported for conditional breaks. +--*/ +#ifndef __DEBUG_H +#define __DEBUG_H + +// +// Define module numbers. +// +#define MODULE_NDIS 0x00010000 +#define MODULE_DATA 0x00020000 +#define MODULE_INIT 0x00030000 +#define MODULE_INITPNP 0x00040000 +#define MODULE_COMMON 0x00050000 +#define MODULE_CONFIG 0x00060000 +#define MODULE_CONFIGM 0x00070000 +#define MODULE_BUS 0x00080000 +#define MODULE_TIMER 0x00090000 +#define MODULE_TIMERM 0x000A0000 +#define MODULE_MINIPORT 0x000B0000 +#define MODULE_REQUESTM 0x000C0000 +#define MODULE_MINISUB 0x000D0000 +#define MODULE_MAC 0x000E0000 +#define MODULE_PROTOCOL 0x000F0000 +#define MODULE_EFILTER 0x00100000 +#define MODULE_TFILTER 0x00110000 +#define MODULE_FFILTER 0x00120000 +#define MODULE_AFILTER 0x00130000 +#define MODULE_DEBUG 0x00140000 +#define MODULE_MININT 0x00150000 +#define MODULE_SENDM 0x00160000 +#define MODULE_NDIS_CO 0x00170000 + + +#define DBG_LEVEL_INFO 0x00000000 +#define DBG_LEVEL_LOG 0x00000800 +#define DBG_LEVEL_WARN 0x00001000 +#define DBG_LEVEL_ERR 0x00002000 +#define DBG_LEVEL_FATAL 0x00003000 + +#define DBG_COMP_INIT 0x00000001 +#define DBG_COMP_CONFIG 0x00000002 +#define DBG_COMP_SEND 0x00000004 +#define DBG_COMP_RECV 0x00000008 +#define DBG_COMP_MEMORY 0x00000010 +#define DBG_COMP_FILTER 0x00000020 +#define DBG_COMP_PROTOCOL 0x00000040 +#define DBG_COMP_REQUEST 0x00000080 +#define DBG_COMP_UNLOAD 0x00000100 +#define DBG_COMP_WORK_ITEM 0x00000200 +#define DBG_COMP_OPEN 0x00000400 +#define DBG_COMP_LOCKS 0x00000800 +#define DBG_COMP_ALL 0xFFFFFFFF + +#if DBG + +#if defined(MEMPRINT) +#include "memprint.h" // DavidTr's memprint program at ntos\srv +#endif // MEMPRINT + +extern ULONG ndisDebugSystems; +extern LONG ndisDebugLevel; +extern ULONG ndisDebugInformationOffset; + +#ifdef NDIS_NT +#define MINIPORT_AT_DPC_LEVEL (CURRENT_IRQL == DISPATCH_LEVEL) +#else +#define MINIPORT_AT_DPC_LEVEL 1 +#endif + +#define DBGPRINT(Component, Level, Fmt) \ + { \ + if ((Level >= ndisDebugLevel) && \ + ((ndisDebugSystems & Component) == Component)) \ + { \ + DbgPrint("***NDIS*** (%x, %d) ", \ + MODULE_NUMBER >> 16, __LINE__); \ + DbgPrint Fmt; \ + } \ + } + +#define DBGBREAK(Component, Level) \ +{ \ + if ((Level >= ndisDebugLevel) && (ndisDebugSystems & Component)) \ + { \ + DbgPrint("***NDIS*** DbgBreak @ %x, %d\n", MODULE_NUMBER, __LINE__); \ + DbgBreakPoint(); \ + } \ +} + +#define IF_DBG(Component, Level) if ((Level >= ndisDebugLevel) && (ndisDebugSystems & Component)) + +extern UINT AfilterDebugFlag; + +#ifdef NDIS_NT +#define DbgIsNonPaged(_Address) (MmIsNonPagedSystemAddressValid((PVOID)(_Address))) +#else +#define DbgIsNonPaged(_Address) TRUE +#endif + +#define DbgIsPacket(_Packet) \ + ( ((_Packet)->Private.Pool->PacketLength) > sizeof(_Packet) ) + +#define DbgIsNull(_Ptr) ( ((PVOID)(_Ptr)) == NULL ) + +// +// The following structures are used to hold debugging information +// +// +#if _DBG +VOID +ndisMInitializeDebugInformation( + IN PNDIS_MINIPORT_BLOCK Miniport + ); + +VOID +NDISM_LOG_RECV_PACKET( + IN PNDIS_MINIPORT_BLOCK Miniport, + IN PVOID Context1, + IN PVOID Context2, + IN ULONG Ident + ); + +VOID +NDISM_LOG_PACKET( + IN PNDIS_MINIPORT_BLOCK Miniport, + IN PVOID Context1, + IN PVOID Context2, + IN ULONG Ident + ); + +typedef struct _PACKET_LOG_ENTRY +{ + PNDIS_MINIPORT_BLOCK Miniport; + PVOID Context1; + PVOID Context2; + ULONG Ident; +} PACKET_LOG_ENTRY, *PPACKET_LOG_ENTRY; + +typedef struct _SPIN_LOCK_LOG_ENTRY +{ + ULONG Ident; // Module & line number. + ULONG Function; // Acquire or release. + ULONG SpinLock; // Pointer to the spinlock. + ULONG filler2; +} SPIN_LOCK_LOG_ENTRY, *PSPIN_LOCK_LOG_ENTRY; + +typedef struct _LOCAL_LOCK_LOG_ENTRY +{ + ULONG Ident; + ULONG Function; + ULONG Status; + ULONG filler1; +} LOCAL_LOCK_LOG_ENTRY, *PLOCAL_LOCK_LOG_ENTRY; + +#define LOG_SIZE 1024 + +typedef struct _PACKET_LOG +{ + UINT CurrentEntry; + PPACKET_LOG_ENTRY Head; + KSPIN_LOCK Lock; + PPACKET_LOG_ENTRY Buffer; +} PACKET_LOG, *PPACKET_LOG; + +typedef struct _SPIN_LOCK_LOG +{ + UINT CurrentEntry; + PSPIN_LOCK_LOG_ENTRY Head; + KSPIN_LOCK Lock; + PSPIN_LOCK_LOG_ENTRY Buffer; +} SPIN_LOCK_LOG, *PSPIN_LOCK_LOG; + +typedef struct _LOCAL_LOCK_LOG +{ + UINT CurrentEntry; + PLOCAL_LOCK_LOG_ENTRY Head; + KSPIN_LOCK Lock; + PLOCAL_LOCK_LOG_ENTRY Buffer; +} LOCAL_LOCK_LOG, *PLOCAL_LOCK_LOG; + + +typedef struct _NDIS_MOJO +{ + PSPIN_LOCK_LOG SpinLockLog; + PLOCAL_LOCK_LOG LocalLockLog; + PPACKET_LOG SendPacketLog; + PPACKET_LOG RecvPacketLog; +} NDIS_MOJO, *PNDIS_MOJO; + +#define NUMBER_OF_LOGS 4 + +// +// Macros for referencing the logs. +// +#define SPIN_LOCK_LOG(_M) ((PNDIS_MOJO)(_M)->Reserved)->SpinLockLog + +#define SL_CURRENT_ENTRY(_M) SPIN_LOCK_LOG((_M))->CurrentEntry +#define SL_HEAD(_M) SPIN_LOCK_LOG((_M))->Head +#define SL_LOCK(_M) SPIN_LOCK_LOG((_M))->Lock +#define SL_LOG(_M) SPIN_LOCK_LOG((_M))->Buffer + +#define LOCAL_LOCK_LOG(_M) ((PNDIS_MOJO)(_M)->Reserved)->LocalLockLog + +#define LL_CURRENT_ENTRY(_M) LOCAL_LOCK_LOG((_M))->CurrentEntry +#define LL_HEAD(_M) LOCAL_LOCK_LOG((_M))->Head +#define LL_LOCK(_M) LOCAL_LOCK_LOG((_M))->Lock +#define LL_LOG(_M) LOCAL_LOCK_LOG((_M))->Buffer + +#define SEND_PACKET_LOG(_M) ((PNDIS_MOJO)(_M)->Reserved)->SendPacketLog + +#define SPL_CURRENT_ENTRY(_M) SEND_PACKET_LOG((_M))->CurrentEntry +#define SPL_HEAD(_M) SEND_PACKET_LOG((_M))->Head +#define SPL_LOCK(_M) SEND_PACKET_LOG((_M))->Lock +#define SPL_LOG(_M) SEND_PACKET_LOG((_M))->Buffer + +#define RECV_PACKET_LOG(_M) ((PNDIS_MOJO)(_M)->Reserved)->RecvPacketLog + +#define RPL_CURRENT_ENTRY(_M) RECV_PACKET_LOG((_M))->CurrentEntry +#define RPL_HEAD(_M) RECV_PACKET_LOG((_M))->Head +#define RPL_LOCK(_M) RECV_PACKET_LOG((_M))->Lock +#define RPL_LOG(_M) RECV_PACKET_LOG((_M))->Buffer + +#else + +#define ndisMInitializeDebugInformation(_Miniport) +#define NDISM_LOG_RECV_PACKET(Miniport, Context1, Context2, Ident) +#define NDISM_LOG_PACKET(Miniport, Context1, Context2, Ident) + +#endif // _DBG + +#else + +#define ndisMInitializeDebugInformation(_Miniport) +#define NDISM_LOG_RECV_PACKET(Miniport, Context1, Context2, Ident) +#define NDISM_LOG_PACKET(Miniport, Context1, Context2, Ident) + +#define MINIPORT_AT_DPC_LEVEL 1 +#define DBGPRINT(Component, Level, Fmt) +#define DBGBREAK(Component, Level) + +#define DbgIsNonPaged(_Address) TRUE +#define DbgIsPacket(_Packet) TRUE +#define DbgIsNull(_Ptr) FALSE + +#define IF_DBG(Component, Level) if (FALSE) + +#endif + +#endif // __DEBUG_H |