|
|
/*++
Copyright (c) 1990-1995 Microsoft Corporation
Module Name:
debug.h Abstract:
This file contains data structures and defs used by the NdisWan driver for debugging Author:
Tony Bell (TonyBe) January 18, 1997
Environment:
Kernel Mode
Revision History:
TonyBe 01/18/97 Created
--*/
#ifndef _NDISWAN_DEBUG_
#define _NDISWAN_DEBUG_
//
// OS specific structures
//
#ifdef NT
#endif
//
// end of OS specific structures
//
//
// Debugging
//
#define DBG_DEATH 1
#define DBG_CRITICAL_ERROR 2
#define DBG_FAILURE 4
#define DBG_INFO 6
#define DBG_TRACE 8
#define DBG_VERBOSE 10
#define DBG_INIT 0x00000001
#define DBG_MINIPORT 0x00000002
#define DBG_PROTOCOL 0x00000004
#define DBG_SEND 0x00000008
#define DBG_RECEIVE 0x00000010
#define DBG_IO 0x00000020
#define DBG_MEMORY 0x00000040
#define DBG_VJ 0x00000080
#define DBG_TAPI 0x00000100
#define DBG_CCP 0x00000200
#define DBG_LOOPBACK 0x00000400
#define DBG_MULTILINK_RECV 0x00000800
#define DBG_MULTILINK_SEND 0x00001000
#define DBG_SEND_VJ 0x00002000
#define DBG_RECV_VJ 0x00004000
#define DBG_CL 0x00008000
#define DBG_CM 0x00010000
#define DBG_INDICATE 0x00020000
#define DBG_BACP 0x00040000
#define DBG_REQUEST 0x00080000
#define DBG_ALL 0xFFFFFFFF
#define INIT_FILESIG 'tini'
#define MINIPORT_FILESIG 'inim'
#define PROTOCOL_FILESIG 'torp'
#define SEND_FILESIG 'dnes'
#define RECEIVE_FILESIG 'vcer'
#define IO_FILESIG ' oi'
#define MEMORY_FILESIG ' mem'
#define CCP_FILESIG ' pcc'
#define CL_FILESIG ' lc'
#define CM_FILESIG ' mc'
#define INDICATE_FILESIG 'idni'
#define REQUEST_FILESIG ' qer'
#define VJ_FILESIG ' jv'
#define TAPI_FILESIG 'ipat'
#define LOOPBACK_FILESIG 'pool'
#define COMPRESS_FILESIG 'pmoc'
#define UTIL_FILESIG 'litu'
#define MAX_BYTE_DEPTH 2048
#if DBG
typedef struct _DBG_PACKET { LIST_ENTRY Linkage; PVOID Packet; ULONG PacketType; struct _BUNDLECB *BundleCB; ULONG BundleState; ULONG BundleFlags; struct _PROTOCOLCB *ProtocolCB; ULONG ProtocolState; struct _LINKCB *LinkCB; ULONG LinkState; ULONG SendCount; } DBG_PACKET, *PDBG_PACKET;
typedef enum DbgPktType { PacketTypeWan = 1, PacketTypeNdis }DbgPktType;
typedef struct _DBG_PKT_CONTEXT { struct _BUNDLECB *BundleCB; struct _PROTOCOLCB *ProtocolCB; struct _LINKCB *LinkCB; PVOID Packet; DbgPktType PacketType; PLIST_ENTRY ListHead; PNDIS_SPIN_LOCK ListLock; } DBG_PKT_CONTEXT, *PDBG_PKT_CONTEXT;
typedef enum TRC_EVENT_TYPE { TrcEventSend = 1, TrcEventRecv }TRC_EVENT_TYPE;
typedef struct _WAN_TRC_EVENT { LIST_ENTRY Linkage; TRC_EVENT_TYPE TrcType; WAN_TIME TrcTimeStamp; ULONG TrcInfoLength; PUCHAR TrcInfo; } WAN_TRC_EVENT, *PWAN_TRC_EVENT;
typedef enum SEND_TRC_TYPE { ProtocolQueue = 1, ProtocolSend, ProtocolSendComlete, FragmentSend, LinkSend, LinkSendComplete } SEND_TRC_TYPE;
typedef struct _SEND_TRC_INFO { SEND_TRC_TYPE SendTrcType; PNDIS_PACKET NdisPacket; NDIS_HANDLE BundleHandle; NDIS_HANDLE ProtocolHandle; NDIS_HANDLE LinkHandle; ULONG SequenceNum; } SEND_TRC_INFO, *PSEND_TRC_INFO;
#define NdisWanDbgOut(_DebugLevel, _DebugMask, _Out) { \
if ((glDebugLevel >= _DebugLevel) && \ (_DebugMask & glDebugMask)) { \ DbgPrint("NDISWAN: "); \ DbgPrint _Out; \ DbgPrint("\n"); \ } \ }
#undef ASSERT
#define ASSERT(exp) \
{ \ if (!(exp)) { \ DbgPrint("NDISWAN: ASSERTION FAILED! %s\n", #exp); \ DbgPrint("NDISWAN: File: %s, Line: %d\n", __FILE__, __LINE__); \ DbgBreakPoint(); \ } \ }
VOID InsertDbgPacket( PDBG_PKT_CONTEXT DbgContext );
BOOLEAN RemoveDbgPacket( PDBG_PKT_CONTEXT DbgContext ); #define INSERT_DBG_SEND(_pt, _ctxcb, _ppcb, _plcb, _p) \
{ \ DBG_PKT_CONTEXT DbgContext; \ DbgContext.Packet = (_p); \ DbgContext.BundleCB = (_ppcb)->BundleCB; \ DbgContext.ProtocolCB = (_ppcb); \ DbgContext.LinkCB = (_plcb); \ if (_ctxcb != NULL) { \ DbgContext.PacketType = _pt; \ DbgContext.ListHead = &(_ctxcb)->SendPacketList; \ DbgContext.ListLock = &(_ctxcb)->Lock; \ InsertDbgPacket(&DbgContext); \ } \ }
#define REMOVE_DBG_SEND(_pt, _ctxcb, _p) \
{ \ DBG_PKT_CONTEXT DbgContext; \ DbgContext.Packet = (_p); \ if (_ctxcb != NULL) { \ DbgContext.PacketType = _pt; \ DbgContext.ListHead = &(_ctxcb)->SendPacketList; \ DbgContext.ListLock = &(_ctxcb)->Lock; \ RemoveDbgPacket(&DbgContext); \ } \ }
#define INSERT_DBG_RECV(_pt, _ctxcb, _ppcb, _plcb, _p) \
{ \ DBG_PKT_CONTEXT DbgContext; \ DbgContext.Packet = (_p); \ DbgContext.BundleCB = NULL; \ DbgContext.ProtocolCB = (_ppcb); \ DbgContext.LinkCB = (_plcb); \ if (_ctxcb != NULL) { \ DbgContext.PacketType = _pt; \ DbgContext.ListHead = &(_ctxcb)->RecvPacketList; \ DbgContext.ListLock = &(_ctxcb)->Lock; \ InsertDbgPacket(&DbgContext); \ } \ }
#define REMOVE_DBG_RECV(_pt, _ctxcb, _p) \
{ \ DBG_PKT_CONTEXT DbgContext; \ DbgContext.Packet = (_p); \ if (_ctxcb != NULL) { \ DbgContext.PacketType = _pt; \ DbgContext.ListHead = &(_ctxcb)->RecvPacketList; \ DbgContext.ListLock = &(_ctxcb)->Lock; \ RemoveDbgPacket(&DbgContext); \ } \ }
#define INSERT_RECV_EVENT(_c) \
{ \ reA[reI] = _c; \ LastIrpAction = _c; \ if (++reI >= 1024) { \ reI = 0; \ } \ }
#else // If not built with debug
#define NdisWanDbgOut(_DebugLevel, _DebugMask, _Out)
#define INSERT_DBG_SEND(_pt, _ctxcb, _ppcb, _plcb, _p)
#define REMOVE_DBG_SEND(_pt, _ctxcb, _p)
#define INSERT_DBG_RECV(_pt, _ctxcb, _ppcb, _plcb, _p)
#define REMOVE_DBG_RECV(_pt, _ctxcb, _p)
#define INSERT_RECV_EVENT(_c)
#endif // end of !DBG
#endif // end of _NDISWAN_DEBUG
|