else { /* System Thread */ Thread->StartAddress = StartRoutine; PspSetCrossThreadFlag(Thread, CT_SYSTEM_THREAD_BIT);
Looks good to me.
And CT_SYSTEM_THREAD_BIT is defined to 0x10 which is correct:
union { struct { ULONG Terminated:1; #if (NTDDI_VERSION >= NTDDI_LONGHORN) ULONG ThreadInserted:1; #else ULONG DeadThread:1; #endif ULONG HideFromDebugger:1; ULONG ActiveImpersonationInfo:1; ULONG SystemThread:1;
so your patch was correct and should be re-applied.
On 12-Aug-08, at 3:22 PM, sginsberg@svn.reactos.org wrote:
Author: sginsberg Date: Tue Aug 12 17:22:51 2008 New Revision: 35294
URL: http://svn.reactos.org/svn/reactos?rev=35294&view=rev Log:
- Temporarily revert my last change. We don't set the SystemThread
flag appropriately and it is always zero
Modified: trunk/reactos/ntoskrnl/ps/kill.c
Modified: trunk/reactos/ntoskrnl/ps/kill.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ps/kill.c?rev=3529... = = = = = = = = ====================================================================== --- trunk/reactos/ntoskrnl/ps/kill.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/ps/kill.c [iso-8859-1] Tue Aug 12 17:22:51 2008 @@ -1086,7 +1086,7 @@ PETHREAD Thread = PsGetCurrentThread();
/* Make sure this is a system thread */
- if (!Thread->SystemThread) return STATUS_INVALID_PARAMETER;
if (Thread->SystemThread) return STATUS_INVALID_PARAMETER;
/* Terminate it for real */ return PspTerminateThreadByPointer(Thread, ExitStatus, TRUE);
Best regards, Alex Ionescu