[ros-dev] [ros-diffs] [fireball] 34230: - Fix a problem with normal and special APCs being inserted in the wrong order, spotted by Jury Sidorov. Now Borland Turbo Debugger should be able to debug applications, also it can fix hangs in other applications. - When delivering kernel APC, set the pending flag to false (by analogy with delivering user APC and clearing its pending flag). See issue #3426 for more details.
Alex Ionescu
ionucu at videotron.ca
Tue Jul 1 20:26:59 CEST 2008
Um...
KiDeliverApc already sets KernelApcPending = FALSE; Now you're setting
it twice...please revert.
On 1-Jul-08, at 3:08 AM, fireball at svn.reactos.org wrote:
> Author: fireball
> Date: Tue Jul 1 05:08:14 2008
> New Revision: 34230
>
> URL: http://svn.reactos.org/svn/reactos?rev=34230&view=rev
> Log:
> - Fix a problem with normal and special APCs being inserted in the
> wrong order, spotted by Jury Sidorov. Now Borland Turbo Debugger
> should be able to debug applications, also it can fix hangs in other
> applications.
> - When delivering kernel APC, set the pending flag to false (by
> analogy with delivering user APC and clearing its pending flag).
> See issue #3426 for more details.
>
> Modified:
> trunk/reactos/ntoskrnl/ke/apc.c (contents, props changed)
>
> Modified: trunk/reactos/ntoskrnl/ke/apc.c
> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/apc.c?rev=34230&r1=34229&r2=34230&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- trunk/reactos/ntoskrnl/ke/apc.c [iso-8859-1] (original)
> +++ trunk/reactos/ntoskrnl/ke/apc.c [iso-8859-1] Tue Jul 1 05:08:14
> 2008
> @@ -145,8 +145,8 @@
> /* Get the APC */
> QueuedApc = CONTAINING_RECORD(NextEntry, KAPC,
> ApcListEntry);
>
> - /* Is this a Normal APC? If so, break */
> - if (QueuedApc->NormalRoutine) break;
> + /* Is this a No-Normal APC? If so, break */
> + if (!QueuedApc->NormalRoutine) break;
>
> /* Move to the next APC in the Queue */
> NextEntry = NextEntry->Blink;
> @@ -320,6 +320,9 @@
> break;
> }
>
> + /* It's not pending anymore */
> + Thread->ApcState.KernelApcPending = FALSE;
> +
> /* Get the next Entry */
> ApcListEntry = Thread->ApcState.ApcListHead[KernelMode].Flink;
> Apc = CONTAINING_RECORD(ApcListEntry, KAPC, ApcListEntry);
>
> Propchange: trunk/reactos/ntoskrnl/ke/apc.c
> ------------------------------------------------------------------------------
> --- svn:needs-lock (original)
> +++ svn:needs-lock (removed)
> @@ -1,1 +1,0 @@
> -*
>
Best regards,
Alex Ionescu
More information about the Ros-dev
mailing list