Author: fireball
Date: Sun Apr 24 11:24:37 2011
New Revision: 51445
URL: http://svn.reactos.org/svn/reactos?rev=51445&view=rev
Log:
[NTOSKRNL/KE]
- Correctly return whether there is a kernel APC pending in KiSwapContextExit. Fixes IRQL asserts seen in bugs 5955 and 5777. Michael Martin's help in finding and fixing this bug was invaluable. Also thanks to Art Yerkes and testing team for additional information.
See issue #5955 for more details.
Modified:
trunk/reactos/ntoskrnl/ke/i386/thrdini.c
Modified: trunk/reactos/ntoskrnl/ke/i386/thrdini.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/i386/thrdini.c…
==============================================================================
--- trunk/reactos/ntoskrnl/ke/i386/thrdini.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ke/i386/thrdini.c [iso-8859-1] Sun Apr 24 11:24:37 2011
@@ -397,12 +397,14 @@
if (!NewThread->SpecialApcDisable)
{
/* Request APC delivery */
- if (SwitchFrame->ApcBypassDisable) HalRequestSoftwareInterrupt(APC_LEVEL);
- return TRUE;
- }
- }
-
- /* Return */
+ if (SwitchFrame->ApcBypassDisable)
+ HalRequestSoftwareInterrupt(APC_LEVEL);
+ else
+ return TRUE;
+ }
+ }
+
+ /* Return stating that no kernel APCs are pending*/
return FALSE;
}
Author: mjmartin
Date: Sun Apr 24 06:48:50 2011
New Revision: 51442
URL: http://svn.reactos.org/svn/reactos?rev=51442&view=rev
Log:
[ntoskrnl]
- Fix a type from rev 19847. Only if the KernelMode List is not empty are there pending APCs.
Modified:
trunk/reactos/ntoskrnl/ke/procobj.c
Modified: trunk/reactos/ntoskrnl/ke/procobj.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/procobj.c?rev=…
==============================================================================
--- trunk/reactos/ntoskrnl/ke/procobj.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ke/procobj.c [iso-8859-1] Sun Apr 24 06:48:50 2011
@@ -538,7 +538,7 @@
KiExitDispatcher(ApcLock.OldIrql);
/* Check if we have pending APCs */
- if (IsListEmpty(&Thread->ApcState.ApcListHead[KernelMode]))
+ if (!(IsListEmpty(&Thread->ApcState.ApcListHead[KernelMode])))
{
/* What do you know, we do! Request them to be delivered */
Thread->ApcState.KernelApcPending = TRUE;
@@ -705,7 +705,7 @@
KiExitDispatcher(ApcLock.OldIrql);
/* Check if we have pending APCs */
- if (IsListEmpty(&Thread->ApcState.ApcListHead[KernelMode]))
+ if (!(IsListEmpty(&Thread->ApcState.ApcListHead[KernelMode])))
{
/* What do you know, we do! Request them to be delivered */
Thread->ApcState.KernelApcPending = TRUE;
Author: ekohl
Date: Sat Apr 23 11:26:16 2011
New Revision: 51438
URL: http://svn.reactos.org/svn/reactos?rev=51438&view=rev
Log:
[NPFS]
Silence some debug messages.
Modified:
trunk/reactos/drivers/filesystems/npfs/fsctrl.c
Modified: trunk/reactos/drivers/filesystems/npfs/fsctrl.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/npfs/f…
==============================================================================
--- trunk/reactos/drivers/filesystems/npfs/fsctrl.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/filesystems/npfs/fsctrl.c [iso-8859-1] Sat Apr 23 11:26:16 2011
@@ -98,14 +98,14 @@
/* Fail, if the CCB is not a pipe CCB */
if (Ccb->Type != CCB_PIPE)
{
- DPRINT1("Not a pipe\n");
+ DPRINT("Not a pipe\n");
return STATUS_ILLEGAL_FUNCTION;
}
/* Fail, if the CCB is not a server end CCB */
if (Ccb->PipeEnd != FILE_PIPE_SERVER_END)
{
- DPRINT1("Not the server end\n");
+ DPRINT("Not the server end\n");
return STATUS_ILLEGAL_FUNCTION;
}
@@ -209,14 +209,14 @@
/* Fail, if the CCB is not a pipe CCB */
if (Ccb->Type != CCB_PIPE)
{
- DPRINT1("Not a pipe\n");
+ DPRINT("Not a pipe\n");
return STATUS_ILLEGAL_FUNCTION;
}
/* Fail, if the CCB is not a server end CCB */
if (Ccb->PipeEnd != FILE_PIPE_SERVER_END)
{
- DPRINT1("Not the server end\n");
+ DPRINT("Not the server end\n");
return STATUS_ILLEGAL_FUNCTION;
}
@@ -336,7 +336,7 @@
FileObject = IoStack->FileObject;
ASSERT(FileObject);
- DPRINT1("Waiting on Pipe %wZ\n", &FileObject->FileName);
+ DPRINT("Waiting on Pipe %wZ\n", &FileObject->FileName);
WaitPipe = (PFILE_PIPE_WAIT_FOR_BUFFER)Irp->AssociatedIrp.SystemBuffer;
@@ -359,7 +359,7 @@
/* Fail if not pipe was found */
if (Fcb == NULL)
{
- DPRINT1("No pipe found!\n", Fcb);
+ DPRINT("No pipe found!\n", Fcb);
return STATUS_OBJECT_NAME_NOT_FOUND;
}