[debug] Change macros and message layout
authorShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Thu, 6 Jan 2011 13:56:51 +0000 (08:56 -0500)
committerShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Thu, 6 Jan 2011 14:33:55 +0000 (09:33 -0500)
This seems simpler.  We used to have #ifs for verbose IRP
debugging.  That' no longer needed.

DBG() could get pretty messy, so now we can choose to
exclude the file, line number, or thread.  Including the
line number depends on including the file.

Also, we exclude the bulk of debug.c from being compiled
if debugging is disabled.

src/aoe/driver.c
src/include/debug.h
src/include/driver.h
src/winvblock/debug.c
src/winvblock/driver.c
src/winvblock/irp.c

index d459d85..16bb73f 100644 (file)
@@ -1816,9 +1816,7 @@ static NTSTATUS AoeIrpPower(
   ) {
     WV_SP_DEV_T dev;
 
-    #ifdef DEBUGIRPS
-    WvlDebugIrpStart(dev_obj, irp);
-    #endif
+    WVL_M_DEBUG_IRP_START(dev_obj, irp);
     /* Check for a bus IRP. */
     if (dev_obj == AoeBusMain.Fdo)
       return WvlBusPower(&AoeBusMain, irp);
@@ -1844,9 +1842,7 @@ static NTSTATUS AoeIrpCreateClose(
   ) {
     WV_SP_DEV_T dev;
 
-    #ifdef DEBUGIRPS
-    WvlDebugIrpStart(dev_obj, irp);
-    #endif
+    WVL_M_DEBUG_IRP_START(dev_obj, irp);
     /* Check for a bus IRP. */
     if (dev_obj == AoeBusMain.Fdo)
       return WvlIrpComplete(irp, 0, STATUS_SUCCESS);
@@ -1866,9 +1862,7 @@ static NTSTATUS AoeIrpSysCtl(
   ) {
     WV_SP_DEV_T dev;
 
-    #ifdef DEBUGIRPS
-    WvlDebugIrpStart(dev_obj, irp);
-    #endif
+    WVL_M_DEBUG_IRP_START(dev_obj, irp);
     /* Check for a bus IRP. */
     if (dev_obj == AoeBusMain.Fdo)
       return WvlBusSysCtl(&AoeBusMain, irp);
@@ -1892,9 +1886,7 @@ static NTSTATUS AoeIrpDevCtl(
     WV_SP_DEV_T dev;
     PIO_STACK_LOCATION io_stack_loc = IoGetCurrentIrpStackLocation(irp);
 
-    #ifdef DEBUGIRPS
-    WvlDebugIrpStart(dev_obj, irp);
-    #endif
+    WVL_M_DEBUG_IRP_START(dev_obj, irp);
     /* Check for a bus IRP. */
     if (dev_obj == AoeBusMain.Fdo) {
         return AoeBusDevCtl(
@@ -1927,9 +1919,7 @@ static NTSTATUS AoeIrpScsi(
     WV_SP_DEV_T dev;
     PIO_STACK_LOCATION io_stack_loc;
 
-    #ifdef DEBUGIRPS
-    WvlDebugIrpStart(dev_obj, irp);
-    #endif
+    WVL_M_DEBUG_IRP_START(dev_obj, irp);
     /* Check for a bus IRP. */
     if (dev_obj == AoeBusMain.Fdo)
       return WvlIrpComplete(irp, 0, STATUS_NOT_SUPPORTED);
@@ -1959,9 +1949,7 @@ static NTSTATUS AoeIrpPnp(
     WV_SP_DEV_T dev;
     UCHAR code = IoGetCurrentIrpStackLocation(irp)->MinorFunction;
 
-    #ifdef DEBUGIRPS
-    WvlDebugIrpStart(dev_obj, irp);
-    #endif
+    WVL_M_DEBUG_IRP_START(dev_obj, irp);
     /* Check for a bus IRP. */
     if (dev_obj == AoeBusMain.Fdo) {
         NTSTATUS status;
index 8f6bd8d..348ec77 100644 (file)
@@ -20,8 +20,8 @@
  * Jul-03-2009@22:39: Initial revision.
  */
 
-#ifndef WV_M_DEBUG_H_
-#  define WV_M_DEBUG_H_
+#ifndef WVL_M_DEBUG_H_
+#  define WVL_M_DEBUG_H_
 
 /**
  * @file
  * function and line number in any debugging output messages.
  */
 
+/** Debugging choices. */
+
+/* Debug messages. */
+#define WVL_M_DEBUG 0
+
+/* Include file. */
+#define WVL_M_DEBUG_FILE 1
+
+/* Include line number.  This depends on WVL_M_DEBUG_FILE */
+#define WVL_M_DEBUG_LINE 1
+
+/* Include thread. */
+#define WVL_M_DEBUG_THREAD 1
+
+/* Verbose IRP debugging.  This depends on WVL_M_DEBUG */
+#define WVL_M_DEBUG_IRPS 0
+
+/** End of debugging choices. */
+
 /* DBG() macro to output debugging messages. */
 #ifdef DBG
 #  undef DBG
 #endif
-/* Uncomment to enable. */
-#if 0
+#if WVL_M_DEBUG
 #  define DBG(...) (                \
     WvlDebugPrint(                  \
         __FILE__,                   \
       ),                            \
     DbgPrint(__VA_ARGS__)           \
   )
+extern WVL_M_LIB NTSTATUS STDCALL WvlDebugPrint(IN PCHAR, IN PCHAR, IN UINT32);
 #else
-#  define DBG( ... ) ((VOID) 0)
+#  define DBG(...) ((VOID) 0)
 #endif
 
-/* Define to enable verbose IRP debugging output. */
-#undef DEBUGIRPS
+/* Establish macros for verbose IRP debugging messages, if applicable. */
+#if WVL_M_DEBUG && WVL_M_DEBUG_IRPS
+#  define WVL_M_DEBUG_IRP_START(Do_, Irp_) (WvlDebugIrpStart((Do_), (Irp_)))
+#  define WVL_M_DEBUG_IRP_END(Irp_, Status_) (WvlDebugIrpEnd((Irp_), (Status_)))
+extern WVL_M_LIB VOID STDCALL WvlDebugIrpStart(IN PDEVICE_OBJECT, IN PIRP);
+extern VOID STDCALL WvlDebugIrpEnd(IN PIRP, IN NTSTATUS);
+#else
+#  define WVL_M_DEBUG_IRP_START(Do_, Irp_) ((VOID) 0)
+#  define WVL_M_DEBUG_IRP_END(Irp_, Status_) ((VOID) 0)
+#endif
 
-extern WVL_M_LIB NTSTATUS STDCALL WvlDebugPrint(IN PCHAR, IN PCHAR, IN UINT32);
 extern VOID Debug_Initialize(void);
-extern WVL_M_LIB VOID STDCALL WvlDebugIrpStart (
-  IN PDEVICE_OBJECT,
-  IN PIRP
- );
-extern VOID STDCALL Debug_IrpEnd (
-  IN PIRP Irp,
-  IN NTSTATUS Status
- );
 extern WVL_M_LIB NTSTATUS STDCALL WvlError(IN PCHAR, IN NTSTATUS);
 
-#endif  /* WV_M_DEBUG_H_ */
+#endif  /* WVL_M_DEBUG_H_ */
index 3c9cafb..9b41c6d 100644 (file)
@@ -30,7 +30,7 @@
 /* For testing and debugging */
 #if 0
 #  define RIS
-#  define DEBUGIRPS
+#  define WVL_M_DEBUG_IRPS 1
 #  define DEBUGMOSTPROTOCOLCALLS
 #  define DEBUGALLPROTOCOLCALLS
 #endif
index fd95ff3..2660d81 100644 (file)
 #include "aoe.h"
 #include "debug.h"
 
-extern int sprintf (
-  char *,
-  const char *,
-  ...
- );
+static KSPIN_LOCK Debug_Globals_SpinLock;
 
-typedef struct _DEBUG_IRPLIST
-{
-  PIRP Irp;
-  UINT32 Number;
-  PCHAR DebugMessage;
-  struct _DEBUG_IRPLIST *Next;
-  struct _DEBUG_IRPLIST *Previous;
-} DEBUG_IRPLIST,
-*PDEBUG_IRPLIST;
+#if WVL_M_DEBUG
+WVL_M_LIB NTSTATUS STDCALL WvlDebugPrint(
+    IN PCHAR File,
+    IN PCHAR Function,
+    IN UINT32 Line
+  ) {
+    #if WVL_M_DEBUG_FILE
+    DbgPrint(File);
+    #  if WVL_M_DEBUG_LINE
+    DbgPrint(" @ %d", Line);
+    #  endif
+    DbgPrint(": ");
+    #endif
+    #if WVL_M_DEBUG_THREAD
+    DbgPrint("T[%p]: ", (PVOID) PsGetCurrentThread());
+    #endif
+    return DbgPrint("%s(): ", Function);
+  }
+#endif
+
+VOID Debug_Initialize(void) {
+  KeInitializeSpinLock ( &Debug_Globals_SpinLock );
+}
+
+WVL_M_LIB NTSTATUS STDCALL WvlError(
+    IN PCHAR Message,
+    IN NTSTATUS Status
+  ) {
+    DBG("%s: 0x%08x\n", Message, Status);
+    return Status;
+  }
+
+#if WVL_M_DEBUG && WVL_M_DEBUG_IRPS
+extern int sprintf(char *, const char *, ...);
+
+typedef struct _DEBUG_IRPLIST {
+    PIRP Irp;
+    UINT32 Number;
+    PCHAR DebugMessage;
+    struct _DEBUG_IRPLIST *Next;
+    struct _DEBUG_IRPLIST *Previous;
+  } DEBUG_IRPLIST, *PDEBUG_IRPLIST;
 
 static PDEBUG_IRPLIST Debug_Globals_IrpList = NULL;
-static KSPIN_LOCK Debug_Globals_SpinLock;
 static UINT32 Debug_Globals_Number = 0;
 
-/* in this file */
+/* Forward declarations. */
 static PDEBUG_IRPLIST STDCALL Debug_IrpListRecord (
   IN PIRP Irp
  );
@@ -104,24 +132,6 @@ static PCHAR STDCALL Debug_SCSIOPString (
   IN UCHAR OperationCode
  );
 
-WVL_M_LIB NTSTATUS STDCALL WvlDebugPrint(
-    IN PCHAR File,
-    IN PCHAR Function,
-    IN UINT32 Line
-  ) {
-    return DbgPrint(
-        "%s: Thread 0x%08X: %s() @ line %d: ",
-        File,
-        (PVOID) PsGetCurrentThread(),
-        Function,
-        Line
-      );
-  }
-
-VOID Debug_Initialize(void) {
-  KeInitializeSpinLock ( &Debug_Globals_SpinLock );
-}
-
 static PDEBUG_IRPLIST STDCALL
 Debug_IrpListRecord (
   IN PIRP Irp
@@ -178,12 +188,7 @@ WVL_M_LIB VOID STDCALL WvlDebugIrpStart(
   DBG ( "IRP %d: %s\n", Record->Number, Record->DebugMessage );
 }
 
-VOID STDCALL
-Debug_IrpEnd (
-  IN PIRP Irp,
-  IN NTSTATUS Status
- )
-{
+VOID STDCALL WvlDebugIrpEnd(IN PIRP Irp, IN NTSTATUS Status) {
   PDEBUG_IRPLIST Record;
   KIRQL Irql;
 
@@ -195,7 +200,7 @@ Debug_IrpEnd (
     }
   /*
    * There is no race condition between getting the record and unlinking in
-   * Debug_Globals_IrpList, unless Debug_IrpEnd is called more than once on
+   * Debug_Globals_IrpList, unless WvlDebugIrpEnd is called more than once on
    * an irp (which itself is a bug, it should only be called one time).
    */
   KeAcquireSpinLock ( &Debug_Globals_SpinLock, &Irql );
@@ -822,11 +827,4 @@ Debug_SCSIOPString (
        return "SCSIOP_UNKNOWN";
     }
 }
-
-WVL_M_LIB NTSTATUS STDCALL WvlError(
-    IN PCHAR Message,
-    IN NTSTATUS Status
-  ) {
-    DBG("%s: 0x%08x\n", Message, Status);
-    return Status;
-  }
+#endif  /* WVL_M_DEBUG && WVL_M_DEBUG_IRPS */
index 5db48d1..e743d53 100644 (file)
@@ -224,9 +224,7 @@ static NTSTATUS WvIrpPower(
   ) {
     WV_SP_DEV_T dev;
 
-    #ifdef DEBUGIRPS
-    WvlDebugIrpStart(dev_obj, irp);
-    #endif
+    WVL_M_DEBUG_IRP_START(dev_obj, irp);
     /* Check for a bus IRP. */
     if (dev_obj == WvBus.Fdo)
       return WvBusEnqueueIrp(irp);
@@ -252,9 +250,7 @@ static NTSTATUS WvIrpCreateClose(
   ) {
     WV_SP_DEV_T dev;
 
-    #ifdef DEBUGIRPS
-    WvlDebugIrpStart(dev_obj, irp);
-    #endif
+    WVL_M_DEBUG_IRP_START(dev_obj, irp);
     /* Check for a bus IRP. */
     if (dev_obj == WvBus.Fdo)
       return WvBusEnqueueIrp(irp);
@@ -274,9 +270,7 @@ static NTSTATUS WvIrpSysCtl(
   ) {
     WV_SP_DEV_T dev;
 
-    #ifdef DEBUGIRPS
-    WvlDebugIrpStart(dev_obj, irp);
-    #endif
+    WVL_M_DEBUG_IRP_START(dev_obj, irp);
     /* Check for a bus IRP. */
     if (dev_obj == WvBus.Fdo)
       return WvBusEnqueueIrp(irp);
@@ -299,9 +293,7 @@ static NTSTATUS WvIrpDevCtl(
   ) {
     WV_SP_DEV_T dev;
 
-    #ifdef DEBUGIRPS
-    WvlDebugIrpStart(dev_obj, irp);
-    #endif
+    WVL_M_DEBUG_IRP_START(dev_obj, irp);
     /* Check for a bus IRP. */
     if (dev_obj == WvBus.Fdo)
       return WvBusEnqueueIrp(irp);
@@ -332,9 +324,7 @@ static NTSTATUS WvIrpScsi(
     WV_SP_DEV_T dev;
     PIO_STACK_LOCATION io_stack_loc = IoGetCurrentIrpStackLocation(irp);
 
-    #ifdef DEBUGIRPS
-    WvlDebugIrpStart(dev_obj, irp);
-    #endif
+    WVL_M_DEBUG_IRP_START(dev_obj, irp);
     /* Check for a bus IRP. */
     if (dev_obj == WvBus.Fdo)
       return WvBusEnqueueIrp(irp);
@@ -363,9 +353,7 @@ static NTSTATUS WvIrpPnp(
     WV_SP_DEV_T dev;
     NTSTATUS status;
 
-    #ifdef DEBUGIRPS
-    WvlDebugIrpStart(dev_obj, irp);
-    #endif
+    WVL_M_DEBUG_IRP_START(dev_obj, irp);
     /* Check for a bus IRP. */
     if (dev_obj == WvBus.Fdo)
       return WvBusEnqueueIrp(irp);
index f85aeae..8aa7dd8 100644 (file)
@@ -45,8 +45,6 @@ WVL_M_LIB NTSTATUS STDCALL WvlIrpComplete(
     Irp->IoStatus.Information = Info;
     Irp->IoStatus.Status = Status;
     IoCompleteRequest(Irp, IO_NO_INCREMENT);
-    #ifdef DEBUGIRPS
-    Debug_IrpEnd(Irp, Status);
-    #endif
+    WVL_M_DEBUG_IRP_END(Irp, Status);
     return Status;
   }