summaryrefslogtreecommitdiffstats
path: root/private/ntos/ndis/elnk3/debug.h
diff options
context:
space:
mode:
Diffstat (limited to 'private/ntos/ndis/elnk3/debug.h')
-rw-r--r--private/ntos/ndis/elnk3/debug.h133
1 files changed, 133 insertions, 0 deletions
diff --git a/private/ntos/ndis/elnk3/debug.h b/private/ntos/ndis/elnk3/debug.h
new file mode 100644
index 000000000..da849a12c
--- /dev/null
+++ b/private/ntos/ndis/elnk3/debug.h
@@ -0,0 +1,133 @@
+
+/*++
+
+Copyright (c) 1990 Microsoft Corporation
+
+Module Name:
+
+ debug.h
+
+Abstract:
+
+ It contains the various debug definitions and macros used in displaying
+ debugging information on the kernel debugger.
+
+Author:
+
+
+Environment:
+
+ Kernel Mode Operating Systems : NT
+
+Revision History:
+
+
+--*/
+
+
+#if DBG
+
+typedef struct _DEBUG_STATS {
+
+ ULONG TotalInterrupts;
+ ULONG TxCompIntCount;
+ ULONG TxAvailIntCount;
+ ULONG TxCompleted;
+
+ ULONG RxCompIntCount;
+ ULONG RxEarlyIntCount;
+ ULONG PacketIndicated;
+ ULONG IndicationCompleted;
+ ULONG TransferDataCount;
+ ULONG IndicateWithDataReady;
+ ULONG BadReceives;
+ ULONG SecondEarlyReceive;
+ ULONG BroadcastsRejected;
+
+ } DEBUG_STATS, *PDEBUG_STATUS;
+
+typedef struct _LOG_ENTRY {
+ UCHAR Letter1;
+ UCHAR Letter2;
+ USHORT Data;
+ } LOG_ENTRY, *PLOG_ENTRY;
+
+
+#define ELNK3_MAX_LOG_SIZE 128
+
+extern ULONG Elnk3LogArray[];
+extern ULONG ElnkLogPointer;
+
+
+#define IF_ELNK3DEBUG(f) if (Elnk3DebugFlag & (f))
+extern ULONG Elnk3DebugFlag;
+
+#define ELNK3_DEBUG_LOUD 0x00000001 // debugging info
+#define ELNK3_DEBUG_VERY_LOUD 0x00000002 // excessive debugging info
+#define ELNK3_DEBUG_IO 0x00000004 // debug I/O port access
+
+#define ELNK3_DEBUG_INIT 0x00000100 // init debugging info
+#define ELNK3_DEBUG_SEND 0x00000200 // init debugging info
+#define ELNK3_DEBUG_RCV 0x00000400
+#define ELNK3_DEBUG_REQ 0x00000800
+
+#define ELNK3_DEBUG_LOG 0x00001000
+
+#define ELNK3_DEBUG_INIT_BREAK 0x80000000 // break at DriverEntry
+#define ELNK3_DEBUG_INIT_FAIL 0x40000000 // fail driver load
+
+//
+// Macro for deciding whether to dump lots of debugging information.
+//
+
+#define IF_LOUD(A) IF_ELNK3DEBUG( ELNK3_DEBUG_LOUD ) { A }
+#define IF_VERY_LOUD(A) IF_ELNK3DEBUG( ELNK3_DEBUG_VERY_LOUD ) { A }
+#define IF_IO_LOUD(A) IF_ELNK3DEBUG( ELNK3_DEBUG_IO ) { A }
+#define IF_INIT_LOUD(A) IF_ELNK3DEBUG( ELNK3_DEBUG_INIT ) { A }
+#define IF_SEND_LOUD(A) IF_ELNK3DEBUG( ELNK3_DEBUG_SEND ) { A }
+#define IF_RCV_LOUD(A) IF_ELNK3DEBUG( ELNK3_DEBUG_RCV ) { A }
+#define IF_REQ_LOUD(A) IF_ELNK3DEBUG( ELNK3_DEBUG_REQ ) { A }
+
+
+#define IF_LOG(c1,c2,data) { \
+ if (Elnk3DebugFlag & ELNK3_DEBUG_LOG) { \
+ Elnk3LogArray[ElnkLogPointer]=((ULONG)(data)<<16) | ((c1)<<8) | (c2); \
+ ElnkLogPointer=(ElnkLogPointer+1)% ELNK3_MAX_LOG_SIZE; \
+ Elnk3LogArray[ElnkLogPointer]=0; \
+ } \
+ }
+#if 0
+
+#define IF_LOG(c1,c2,data) { \
+ \
+ if (Elnk3DebugFlag & ELNK3_DEBUG_LOG) { \
+ Elnk3LogArray[ElnkLogPointer].Letter1=(c2); \
+ Elnk3LogArray[ElnkLogPointer].Letter2=(c1); \
+ Elnk3LogArray[ElnkLogPointer].Data =(USHORT)(data); \
+ ElnkLogPointer=(ElnkLogPointer+1)% ELNK3_MAX_LOG_SIZE; \
+ \
+ Elnk3LogArray[ElnkLogPointer].Letter1=0; \
+ Elnk3LogArray[ElnkLogPointer].Letter2=0; \
+ Elnk3LogArray[ElnkLogPointer].Data =0; \
+ } \
+ }
+#endif
+
+#define DEBUG_STAT(x) ((x)++)
+
+
+#else
+
+#define IF_LOUD(A)
+#define IF_VERY_LOUD(A)
+#define IF_IO_LOUD(A)
+#define IF_INIT_LOUD(A)
+#define IF_SEND_LOUD(A)
+#define IF_RCV_LOUD(A)
+#define IF_REQ_LOUD(A)
+
+#define DEBUG_STAT(x)
+
+#define IF_LOG(c1,c2,data)
+
+#endif