- Allow file debug prints to happen at IRQL > DISPATCH_LEVEL, but don't queue a work...
authorAlex Ionescu <aionescu@gmail.com>
Tue, 26 Jul 2005 15:15:18 +0000 (15:15 +0000)
committerAlex Ionescu <aionescu@gmail.com>
Tue, 26 Jul 2005 15:15:18 +0000 (15:15 +0000)
svn path=/trunk/; revision=16745

reactos/ntoskrnl/kd/kdio.c

index e463282..deecf6a 100644 (file)
@@ -71,9 +71,17 @@ KdpPrintToLog(PCH String)
     /* Make sure we are initialized and can queue */
     if (!KdpLogInitialized || (ItemQueued)) return;
 
-    /* Queue the work item */
-    ExQueueWorkItem(&KdpDebugLogQueue, HyperCriticalWorkQueue);
-    ItemQueued = TRUE;
+    /* 
+     * Queue the work item 
+     * Note that we don't want to queue if we are > DISPATCH_LEVEL...
+     * The message is in the buffer and will simply be taken care of at
+     * the next time we are at <= DISPATCH, so it won't be lost.
+     */
+    if (KeGetCurrentIrql() <= DISPATCH_LEVEL)
+    {
+        ExQueueWorkItem(&KdpDebugLogQueue, HyperCriticalWorkQueue);
+        ItemQueued = TRUE;
+    }
 }
 
 VOID