Fixed remainingcalls to ObGetReferenceCount() and ObGetHandleCount().
[reactos.git] / reactos / ntoskrnl / ps / kill.c
index 9da83a2..b73b576 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: kill.c,v 1.48 2001/11/07 02:16:25 ekohl Exp $
+/* $Id: kill.c,v 1.51 2002/03/05 11:33:12 ekohl Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -101,7 +101,7 @@ PsReapThreads(VOID)
             
             DPRINT("PsProcessType %x\n", PsProcessType);
             DPRINT("Reaping thread %x\n", current);
-            DPRINT("Ref count %d\n", ObGetReferenceCount(Process));
+            DPRINT("Pointer count %d\n", ObGetObjectPointerCount(Process));
             current->Tcb.State = THREAD_STATE_TERMINATED_2;
             RemoveEntryList(&current->Tcb.ProcessThreadListEntry);
             if (IsListEmpty(&Process->ThreadListHead))
@@ -111,7 +111,7 @@ PsReapThreads(VOID)
                  PiTerminateProcess(Process, Status);
                  KeAcquireSpinLock( &PiThreadListLock, &oldIrql );
               }
-            DPRINT("Ref count %d\n", ObGetReferenceCount(Process));
+            DPRINT("Pointer count %d\n", ObGetObjectPointerCount(Process));
             KeReleaseSpinLock(&PiThreadListLock, oldIrql);
             ObDereferenceObject(current);
             KeAcquireSpinLock(&PiThreadListLock, &oldIrql);
@@ -141,6 +141,7 @@ PsTerminateCurrentThread(NTSTATUS ExitStatus)
    CurrentThread->ExitStatus = ExitStatus;
    Thread = KeGetCurrentThread();
    KeCancelTimer(&Thread->Timer);
+   KeReleaseSpinLock(&PiThreadListLock, oldIrql);
    
    /* abandon all owned mutants */
    current_entry = Thread->MutantListHead.Flink;
@@ -159,7 +160,8 @@ PsTerminateCurrentThread(NTSTATUS ExitStatus)
    CurrentThread->Tcb.DispatcherHeader.SignalState = TRUE;
    KeDispatcherObjectWake(&CurrentThread->Tcb.DispatcherHeader);
    KeReleaseDispatcherDatabaseLock(FALSE);
-   
+
+   KeAcquireSpinLock(&PiThreadListLock, &oldIrql);
    PsDispatchThreadNoLock(THREAD_STATE_TERMINATED_1);
    KeBugCheck(0);
 }
@@ -222,9 +224,9 @@ NTSTATUS STDCALL
 PiTerminateProcess(PEPROCESS Process,
                   NTSTATUS ExitStatus)
 {
-   DPRINT("PiTerminateProcess(Process %x, ExitStatus %x) RC %d HC %d\n",
-          Process, ExitStatus, ObGetReferenceCount(Process),
-          ObGetHandleCount(Process));
+   DPRINT("PiTerminateProcess(Process %x, ExitStatus %x) PC %d HC %d\n",
+          Process, ExitStatus, ObGetObjectPointerCount(Process),
+          ObGetObjectHandleCount(Process));
    
    if (InterlockedExchange((PLONG)&Process->Pcb.State, 
                           PROCESS_STATE_TERMINATED) ==