Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

173 lines
5.4 KiB

//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1998 - 2000
//
// File: debug.h
//
//--------------------------------------------------------------------------
#ifndef _DEBUG_H_
#define _DEBUG_H_
//
// Debug Defines and Macros
//
extern ULONG d1;
extern ULONG d2;
extern ULONG d3;
extern ULONG d4;
extern ULONG d5;
extern ULONG d6;
extern ULONG d7;
extern ULONG d8;
extern ULONG d9;
extern ULONG Trace;
extern ULONG Break;
extern ULONG AllowAsserts;
//
// set bits using DD_* bit defs to mask off debug spew for a specific device
//
extern ULONG DbgMaskFdo;
extern ULONG DbgMaskRawPort;
extern ULONG DbgMaskDaisyChain0;
extern ULONG DbgMaskDaisyChain1;
extern ULONG DbgMaskEndOfChain;
extern ULONG DbgMaskLegacyZip;
extern ULONG DbgMaskNoDevice;
#define PptAssert(_expr_) if( AllowAsserts ) ASSERT((_expr_))
#define PptAssertMsg(_msg_,_expr_) if( AllowAsserts ) ASSERTMSG((_msg_),(_expr_))
#define ASSERT_EVENT(E) { \
ASSERT((E)->Header.Type == NotificationEvent || \
(E)->Header.Type == SynchronizationEvent); \
}
//
// Break bit definitions:
//
#define PPT_BREAK_ON_DRIVER_ENTRY 0x00000001
#define PptBreakOnRequest( BREAK_CONDITION, STRING) \
if( Break & (BREAK_CONDITION) ) { \
DbgPrint STRING; \
DbgBreakPoint(); \
}
// driver logic analyzer - show data bytes xfer'd in NIBBLE and/or BECP/HWECP modes
// 1 == ON
// 0 == OFF
#define DBG_SHOW_BYTES 0
#if 1 == DBG_SHOW_BYTES
extern ULONG DbgShowBytes;
#endif
#if DBG
#define PptEnableDebugSpew 1
#else
#define PptEnableDebugSpew 0
#endif
#if 1 == PptEnableDebugSpew
#define DD PptPrint
#else
#define DD
#define P5ReadPortUchar( _PORT_ ) READ_PORT_UCHAR( (_PORT_) )
#define P5ReadPortBufferUchar( _PORT_, _BUFFER_, _COUNT_ ) READ_PORT_BUFFER_UCHAR( (_PORT_), (_BUFFER_), (_COUNT_) )
#define P5WritePortUchar( _PORT_, _VALUE_ ) WRITE_PORT_UCHAR( (_PORT_), (_VALUE_) )
#define P5WritePortBufferUchar( _PORT_, _BUFFER_, _COUNT_ ) WRITE_PORT_BUFFER_UCHAR( (_PORT_), (_BUFFER_), (_COUNT_) )
#define PptFdoDumpPnpIrpInfo( _FDO_, _IRP_ )
#define PptPdoDumpPnpIrpInfo( _PDO_, _IRP_ )
#define P5TraceIrpArrival( _DEVOBJ_, _IRP_ )
#define P5TraceIrpCompletion( _IRP_ )
#define PptAcquireRemoveLock( _REMOVELOCK_, _TAG_ ) IoAcquireRemoveLock( (_REMOVELOCK_), (_TAG_) )
#define PptReleaseRemoveLock( _REMOVELOCK_, _TAG_ ) IoReleaseRemoveLock( (_REMOVELOCK_), (_TAG_) )
#define PptReleaseRemoveLockAndWait( _REMOVELOCK_, _TAG_ ) IoReleaseRemoveLockAndWait( (_REMOVELOCK_), (_TAG_) )
#define P5SetPhase( _PDX_, _PHASE_ ) (_PDX_)->CurrentPhase = (_PHASE_)
#define P5BSetPhase( _IEEESTATE_, _PHASE_ ) (_IEEESTATE_)->CurrentPhase = (_PHASE_)
#endif
VOID
PptPrint( PCOMMON_EXTENSION Ext, ULONG Flags, PCHAR FmtStr, ... );
//
// Trace bit definitions:
//
#define DDE 0x00000001 // Error messages
#define DDW 0x00000002 // Warning messages
#define DDT 0x00000004 // program Trace messages
#define DDINFO 0x00000008 // Informational messages
#define DDP 0x00000010 // Pnp and Power messages
#define DDC 0x00000020 // daisy Chain messages - select/deselect
#define DDA 0x00000040 // port Arbitration messages - acquire/release of port
#define DDR 0x00000080 // Registry access
#define DD_SEL 0x01000000 // Acquire/Release port & DaisyChain Select/Deselect device
#define DD_DL 0x02000000 // 1284.3 DataLink (for dot4)
#define DDB 0x00000100 // show Bytes written to / read from i/o ports
#define DD_IU 0x00000200 // Init(DriverEntry)/Unload
#define DD_PNP1 0x00000400 // PnP on FDO
#define DD_PNP2 0x00000800 // PnP on PDO
#define DD_OC1 0x00001000 // Open/Close/Cleanup on FDO
#define DD_OC2 0x00002000 // Open/Close/Cleanup on PDO
#define DD_RW 0x00004000 // Read/Write
#define DD_RWV 0x00008000 // Read/Write Verbose
#define DD_IEEE 0x00010000 // IEEE negotiation/termination etc.
#define DD_CHIP 0x00020000 // parallel port chip info
#define DD_ERR 0x00040000 // Error detected
#define DD_WRN 0x00080000 // Warning
#define DD_CAN 0x00200000 // Cancel
#define DD_SM 0x00400000 // IEEE state machine (state & phase)
#define DD_EX 0x00800000 // Exported functions (to ppa/ppa3)
#define DD_TMP1 0x10000000 // temp 1 - used for temporary debugging
#define DD_TMP2 0x20000000 // temp 2 - used for temporary debugging
#define DD_VERB 0x80000000 // Verbose
#define DDPrint( _b_, _x_ ) if( (_b_) & Trace ) DbgPrint _x_
//
// Specific Diagnostics
//
//
// DVRH_SHOW_BYTE_LOG 0 - Byte Log off
// 1 - Byte Log on
#define DVRH_SHOW_BYTE_LOG 0
//
// DVRH_PAR_LOGFILE is used to allow for debug logging to a file
// This functionality is for debugging purposes only.
// 0 - off
// 1 - on
#define DVRH_PAR_LOGFILE 0
//
// DVRH_BUS_RESET_ON_ERROR
// This functionality is for debugging purposes only.
// Holds a bus reset for 100us when a handshaking error
// is discovered. This is useful for triggering the
// logic analyzer
// 0 - off
// 1 - on
#define DVRH_BUS_RESET_ON_ERROR 0
#if (1 == DVRH_PAR_LOGFILE)
#define DEFAULT_LOG_FILE_NAME L"\\??\\C:\\tmp\\parport.log"
#define DbgPrint DVRH_LogMessage
BOOLEAN DVRH_LogMessage(PCHAR szFormat, ...);
#endif
#endif // _DEBUG_H_