summaryrefslogtreecommitdiffstats
path: root/private/ntos/ndis/ndis40/ndisdbg.h
diff options
context:
space:
mode:
Diffstat (limited to 'private/ntos/ndis/ndis40/ndisdbg.h')
-rw-r--r--private/ntos/ndis/ndis40/ndisdbg.h270
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