Author: ion
Date: Tue Jul 18 18:34:06 2006
New Revision: 23146
URL: 
http://svn.reactos.org/svn/reactos?rev=23146&view=rev
Log:
[AUDIT] - State.c is clean, it is merely a collection of trivial ~10 line wrappers around
the actual kernel (Ke) functions which do the work.
- Rename suspend.c to state.c (since it also had resume APIs) and add alert APIs from
kthread to it too.
- Fix a bug in one of the alert APIs which was probing for a valid pointer even if the
caller had given NULL (which is valid if the caller doesn't want the previous state
returned).
Added:
    trunk/reactos/ntoskrnl/ps/state.c   (contents, props changed)
      - copied, changed from r23131, trunk/reactos/ntoskrnl/ps/suspend.c
Removed:
    trunk/reactos/ntoskrnl/ps/suspend.c
Modified:
    trunk/reactos/ntoskrnl/include/internal/ke.h
    trunk/reactos/ntoskrnl/ke/kthread.c
    trunk/reactos/ntoskrnl/ntoskrnl.rbuild
    trunk/reactos/ntoskrnl/ps/thread.c
Modified: trunk/reactos/ntoskrnl/include/internal/ke.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/…
==============================================================================
--- trunk/reactos/ntoskrnl/include/internal/ke.h (original)
+++ trunk/reactos/ntoskrnl/include/internal/ke.h Tue Jul 18 18:34:06 2006
@@ -310,6 +310,25 @@
     IN OUT PKTHREAD Thread
 );
+BOOLEAN
+NTAPI
+KeAlertThread(
+    IN PKTHREAD Thread,
+    IN KPROCESSOR_MODE AlertMode
+);
+
+ULONG
+NTAPI
+KeAlertResumeThread(
+    IN PKTHREAD Thread
+);
+
+ULONG
+NTAPI
+KeResumeThread(
+    IN PKTHREAD Thread
+);
+
 PVOID
 NTAPI
 KeSwitchKernelStack(
Modified: trunk/reactos/ntoskrnl/ke/kthread.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/kthread.c?rev=…
==============================================================================
--- trunk/reactos/ntoskrnl/ke/kthread.c (original)
+++ trunk/reactos/ntoskrnl/ke/kthread.c Tue Jul 18 18:34:06 2006
@@ -443,8 +443,8 @@
 }
 ULONG
-STDCALL
-KeResumeThread(PKTHREAD Thread)
+NTAPI
+KeResumeThread(IN PKTHREAD Thread)
 {
     ULONG PreviousCount;
     KIRQL OldIrql;
@@ -624,7 +624,7 @@
 }
 ULONG
-STDCALL
+NTAPI
 KeAlertResumeThread(IN PKTHREAD Thread)
 {
     ULONG PreviousCount;
@@ -674,9 +674,9 @@
 }
 BOOLEAN
-STDCALL
-KeAlertThread(PKTHREAD Thread,
-              KPROCESSOR_MODE AlertMode)
+NTAPI
+KeAlertThread(IN PKTHREAD Thread,
+              IN KPROCESSOR_MODE AlertMode)
 {
     KIRQL OldIrql;
     BOOLEAN PreviousState;
@@ -1550,109 +1550,6 @@
     return OldState;
 }
-/*
- *
- * NOT EXPORTED
- */
-NTSTATUS
-STDCALL
-NtAlertResumeThread(IN  HANDLE ThreadHandle,
-                    OUT PULONG SuspendCount)
-{
-    KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
-    PETHREAD Thread;
-    NTSTATUS Status;
-    ULONG PreviousState;
-
-    /* Check if parameters are valid */
-    if(PreviousMode != KernelMode) {
-
-        _SEH_TRY {
-
-            ProbeForWriteUlong(SuspendCount);
-
-        } _SEH_HANDLE {
-
-            Status = _SEH_GetExceptionCode();
-
-        } _SEH_END;
-    }
-
-    /* Reference the Object */
-    Status = ObReferenceObjectByHandle(ThreadHandle,
-                                       THREAD_SUSPEND_RESUME,
-                                       PsThreadType,
-                                       PreviousMode,
-                                       (PVOID*)&Thread,
-                                       NULL);
-
-    /* Check for Success */
-    if (NT_SUCCESS(Status)) {
-
-        /* Call the Kernel Function */
-        PreviousState = KeAlertResumeThread(&Thread->Tcb);
-
-        /* Dereference Object */
-        ObDereferenceObject(Thread);
-
-        if (SuspendCount) {
-
-            _SEH_TRY {
-
-                *SuspendCount = PreviousState;
-
-            } _SEH_HANDLE {
-
-                Status = _SEH_GetExceptionCode();
-
-            } _SEH_END;
-        }
-    }
-
-    /* Return status */
-    return Status;
-}
-
-/*
- * @implemented
- *
- * EXPORTED
- */
-NTSTATUS
-STDCALL
-NtAlertThread (IN HANDLE ThreadHandle)
-{
-    KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
-    PETHREAD Thread;
-    NTSTATUS Status;
-
-    /* Reference the Object */
-    Status = ObReferenceObjectByHandle(ThreadHandle,
-                                       THREAD_SUSPEND_RESUME,
-                                       PsThreadType,
-                                       PreviousMode,
-                                       (PVOID*)&Thread,
-                                       NULL);
-
-    /* Check for Success */
-    if (NT_SUCCESS(Status)) {
-
-        /*
-         * Do an alert depending on the processor mode. If some kmode code wants to
-         * enforce a umode alert it should call KeAlertThread() directly. If kmode
-         * code wants to do a kmode alert it's sufficient to call it with Zw or just
-         * use KeAlertThread() directly
-         */
-        KeAlertThread(&Thread->Tcb, PreviousMode);
-
-        /* Dereference Object */
-        ObDereferenceObject(Thread);
-    }
-
-    /* Return status */
-    return Status;
-}
-
 NTSTATUS
 STDCALL
 NtDelayExecution(IN BOOLEAN Alertable,
Modified: trunk/reactos/ntoskrnl/ntoskrnl.rbuild
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ntoskrnl.rbuild?r…
==============================================================================
--- trunk/reactos/ntoskrnl/ntoskrnl.rbuild (original)
+++ trunk/reactos/ntoskrnl/ntoskrnl.rbuild Tue Jul 18 18:34:06 2006
@@ -295,7 +295,7 @@
                        <file>query.c</file>
                        <file>quota.c</file>
                        <file>security.c</file>
-                       <file>suspend.c</file>
+                       <file>state.c</file>
                        <file>thread.c</file>
                        <file>win32.c</file>
        </directory>
Copied: trunk/reactos/ntoskrnl/ps/state.c (from r23131,
trunk/reactos/ntoskrnl/ps/suspend.c)
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ps/state.c?p2=tru…
==============================================================================
--- trunk/reactos/ntoskrnl/ps/suspend.c (original)
+++ trunk/reactos/ntoskrnl/ps/state.c Tue Jul 18 18:34:06 2006
@@ -1,11 +1,10 @@
-/* $Id$
- *
- * COPYRIGHT:       See COPYING in the top level directory
- * PROJECT:         ReactOS kernel
- * FILE:            ntoskrnl/ps/suspend.c
- * PURPOSE:         Thread managment
- *
- * PROGRAMMERS:     David Welch (welch(a)mcmail.com)
+/*
+ * PROJECT:         ReactOS Kernel
+ * LICENSE:         GPL - See COPYING in the top level directory
+ * FILE:            ntoskrnl/ps/state.c
+ * PURPOSE:         Process Manager: Process/Thread State Control
+ * PROGRAMMERS:     Alex Ionescu (alex.ionescu(a)reactos.org)
+ *                  Thomas Weidenmueller (w3seek(a)reactos.org)
  */
 /* INCLUDES ******************************************************************/
@@ -14,48 +13,139 @@
 #define NDEBUG
 #include <internal/debug.h>
-ULONG
-STDCALL
-KeResumeThread(PKTHREAD Thread);
-
 /* FUNCTIONS *****************************************************************/
 /*
- * FUNCTION: Decrements a thread's resume count
- * ARGUMENTS:
- *        ThreadHandle = Handle to the thread that should be resumed
- *        ResumeCount =  The resulting resume count.
- * RETURNS: Status
+ * @implemented
  */
 NTSTATUS
-STDCALL
+NTAPI
+NtAlertThread(IN HANDLE ThreadHandle)
+{
+    KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
+    PETHREAD Thread;
+    NTSTATUS Status;
+
+    /* Reference the Object */
+    Status = ObReferenceObjectByHandle(ThreadHandle,
+                                       THREAD_SUSPEND_RESUME,
+                                       PsThreadType,
+                                       PreviousMode,
+                                       (PVOID*)&Thread,
+                                       NULL);
+    if (NT_SUCCESS(Status))
+    {
+        /*
+         * Do an alert depending on the processor mode. If some kmode code wants to
+         * enforce a umode alert it should call KeAlertThread() directly. If kmode
+         * code wants to do a kmode alert it's sufficient to call it with Zw or just
+         * use KeAlertThread() directly
+         */
+        KeAlertThread(&Thread->Tcb, PreviousMode);
+
+        /* Dereference Object */
+        ObDereferenceObject(Thread);
+    }
+
+    /* Return status */
+    return Status;
+}
+
+NTSTATUS
+NTAPI
+NtAlertResumeThread(IN HANDLE ThreadHandle,
+                    OUT PULONG SuspendCount)
+{
+    KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
+    PETHREAD Thread;
+    NTSTATUS Status = STATUS_SUCCESS;
+    ULONG PreviousState;
+
+    /* Check if we came from user mode with a suspend count */
+    if ((SuspendCount) && (PreviousMode != KernelMode))
+    {
+        /* Enter SEH for probing */
+        _SEH_TRY
+        {
+            /* Probe the count */
+            ProbeForWriteUlong(SuspendCount);
+        }
+        _SEH_HANDLE
+        {
+            /* Get the exception code */
+            Status = _SEH_GetExceptionCode();
+        }
+        _SEH_END;
+
+        /* Fail on exception */
+        if (!NT_SUCCESS(Status)) return Status;
+    }
+
+    /* Reference the Object */
+    Status = ObReferenceObjectByHandle(ThreadHandle,
+                                       THREAD_SUSPEND_RESUME,
+                                       PsThreadType,
+                                       PreviousMode,
+                                       (PVOID*)&Thread,
+                                       NULL);
+    if (NT_SUCCESS(Status))
+    {
+        /* Call the Kernel Function */
+        PreviousState = KeAlertResumeThread(&Thread->Tcb);
+
+        /* Dereference Object */
+        ObDereferenceObject(Thread);
+
+        /* Check if the caller gave a suspend count */
+        if (SuspendCount)
+        {
+            /* Enter SEH for write */
+            _SEH_TRY
+            {
+                /* Write state back */
+                *SuspendCount = PreviousState;
+            }
+            _SEH_HANDLE
+            {
+                /* Get exception code */
+                Status = _SEH_GetExceptionCode();
+            }
+            _SEH_END;
+        }
+    }
+
+    /* Return status */
+    return Status;
+}
+
+NTSTATUS
+NTAPI
 NtResumeThread(IN HANDLE ThreadHandle,
-               IN PULONG SuspendCount  OPTIONAL)
+               OUT PULONG SuspendCount OPTIONAL)
 {
     PETHREAD Thread;
     ULONG Prev;
-    KPROCESSOR_MODE PreviousMode;
+    KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
     NTSTATUS Status = STATUS_SUCCESS;
-
     PAGED_CODE();
-    PreviousMode = ExGetPreviousMode();
-
-    DPRINT("NtResumeThead(ThreadHandle %lx  SuspendCount %p)\n",
-           ThreadHandle, SuspendCount);
-
-    /* Check buffer validity */
-    if(SuspendCount && PreviousMode != KernelMode) {
-
-        _SEH_TRY {
-
+    /* Check if caller gave a suspend count from user mode */
+    if ((SuspendCount) && (PreviousMode != KernelMode))
+    {
+        /* Enter SEH for probing */
+        _SEH_TRY
+        {
+            /* Probe the count */
             ProbeForWriteUlong(SuspendCount);
-         } _SEH_HANDLE {
-
+        }
+        _SEH_HANDLE
+        {
+            /* Get the exception code */
             Status = _SEH_GetExceptionCode();
-
-        } _SEH_END;
-
+        }
+        _SEH_END;
+
+        /* Fail on exception */
         if(!NT_SUCCESS(Status)) return Status;
     }
@@ -66,50 +156,37 @@
                                        PreviousMode,
                                        (PVOID*)&Thread,
                                        NULL);
-    if (!NT_SUCCESS(Status)) {
-
-        return Status;
-    }
+    if (!NT_SUCCESS(Status)) return Status;
     /* Call the Kernel Function */
     Prev = KeResumeThread(&Thread->Tcb);
-    /* Return it */
-    if(SuspendCount) {
-
-        _SEH_TRY {
-
+    /* Check if the caller wanted the count back */
+    if (SuspendCount)
+    {
+        /* Enter SEH for write back */
+        _SEH_TRY
+        {
+            /* Write the count */
             *SuspendCount = Prev;
-
-        } _SEH_HANDLE {
-
+        }
+        _SEH_HANDLE
+        {
+            /* Get the exception code */
             Status = _SEH_GetExceptionCode();
-
-        } _SEH_END;
-    }
-
-    /* Dereference and Return */
-    ObDereferenceObject ((PVOID)Thread);
-    return Status;
-}
-
-/*
- * FUNCTION: Increments a thread's suspend count
- * ARGUMENTS:
- *        ThreadHandle = Handle to the thread that should be resumed
- *        PreviousSuspendCount =  The resulting/previous suspend count.
- * REMARK:
- *        A thread will be suspended if its suspend count is greater than 0.
- *        This procedure maps to the win32 SuspendThread function. (
- *        documentation about the the suspend count can be found here aswell )
- *        The suspend count is not increased if it is greater than
- *        MAXIMUM_SUSPEND_COUNT.
- * RETURNS: Status
- */
-NTSTATUS
-STDCALL
+        }
+        _SEH_END;
+    }
+
+    /* Dereference and return */
+    ObDereferenceObject(Thread);
+    return Status;
+}
+
+NTSTATUS
+NTAPI
 NtSuspendThread(IN HANDLE ThreadHandle,
-                IN PULONG PreviousSuspendCount  OPTIONAL)
+                OUT PULONG PreviousSuspendCount OPTIONAL)
 {
     PETHREAD Thread;
     ULONG Prev;
@@ -117,18 +194,23 @@
     NTSTATUS Status = STATUS_SUCCESS;
     PAGED_CODE();
-    /* Check buffer validity */
-    if(PreviousSuspendCount && PreviousMode != KernelMode)
-    {
+    /* Check if caller gave a suspend count from user mode */
+    if ((PreviousSuspendCount) && (PreviousMode != KernelMode))
+    {
+        /* Enter SEH for probing */
         _SEH_TRY
         {
+            /* Probe the count */
             ProbeForWriteUlong(PreviousSuspendCount);
-         }
+        }
         _SEH_HANDLE
         {
+            /* Get the exception code */
             Status = _SEH_GetExceptionCode();
-        } _SEH_END;
-
+        }
+        _SEH_END;
+
+        /* Fail on exception */
         if(!NT_SUCCESS(Status)) return Status;
     }
@@ -163,29 +245,24 @@
         /* Don't fail if we merely couldn't write the handle back */
         if (Status != STATUS_SUSPEND_COUNT_EXCEEDED) Status = STATUS_SUCCESS;
-    } _SEH_END;
+    }
+    _SEH_END;
     /* Return */
     ObDereferenceObject(Thread);
     return Status;
 }
-
-/*
- * @unimplemented
- */
-NTSTATUS
-STDCALL
+NTSTATUS
+NTAPI
 NtSuspendProcess(IN HANDLE ProcessHandle)
 {
-    KPROCESSOR_MODE PreviousMode;
+    KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
     PEPROCESS Process;
     NTSTATUS Status;
-
     PAGED_CODE();
-    PreviousMode = ExGetPreviousMode();
-
+    /* Reference the process */
     Status = ObReferenceObjectByHandle(ProcessHandle,
                                        PROCESS_SUSPEND_RESUME,
                                        PsProcessType,
@@ -197,29 +274,23 @@
         /* FIXME */
         Status = STATUS_NOT_IMPLEMENTED;
         DPRINT1("NtSuspendProcess not yet implemented!\n");
-
         ObDereferenceObject(Process);
     }
-    return Status;
-}
-
-
-/*
- * @unimplemented
- */
-NTSTATUS
-STDCALL
+    /* Return status */
+    return Status;
+}
+
+NTSTATUS
+NTAPI
 NtResumeProcess(IN HANDLE ProcessHandle)
 {
-    KPROCESSOR_MODE PreviousMode;
+    KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
     PEPROCESS Process;
     NTSTATUS Status;
-
     PAGED_CODE();
-    PreviousMode = ExGetPreviousMode();
-
+    /* Reference the process */
     Status = ObReferenceObjectByHandle(ProcessHandle,
                                        PROCESS_SUSPEND_RESUME,
                                        PsProcessType,
@@ -231,11 +302,20 @@
         /* FIXME */
         Status = STATUS_NOT_IMPLEMENTED;
         DPRINT1("NtResumeProcess not yet implemented!\n");
-
         ObDereferenceObject(Process);
     }
-    return Status;
+    /* Return status */
+    return Status;
+}
+
+NTSTATUS
+NTAPI
+NtTestAlert(VOID)
+{
+    /* Check and Alert Thread if needed */
+    return KeTestAlertThread(ExGetPreviousMode()) ?
+           STATUS_ALERTED : STATUS_SUCCESS;
 }
 /* EOF */
Propchange: trunk/reactos/ntoskrnl/ps/state.c
------------------------------------------------------------------------------
    svn:eol-style = native
Propchange: trunk/reactos/ntoskrnl/ps/state.c
------------------------------------------------------------------------------
    svn:keywords = author date id revision
Removed: trunk/reactos/ntoskrnl/ps/suspend.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ps/suspend.c?rev=…
==============================================================================
--- trunk/reactos/ntoskrnl/ps/suspend.c (original)
+++ trunk/reactos/ntoskrnl/ps/suspend.c (removed)
@@ -1,241 +1,0 @@
-/* $Id$
- *
- * COPYRIGHT:       See COPYING in the top level directory
- * PROJECT:         ReactOS kernel
- * FILE:            ntoskrnl/ps/suspend.c
- * PURPOSE:         Thread managment
- *
- * PROGRAMMERS:     David Welch (welch(a)mcmail.com)
- */
-
-/* INCLUDES ******************************************************************/
-
-#include <ntoskrnl.h>
-#define NDEBUG
-#include <internal/debug.h>
-
-ULONG
-STDCALL
-KeResumeThread(PKTHREAD Thread);
-
-/* FUNCTIONS *****************************************************************/
-
-/*
- * FUNCTION: Decrements a thread's resume count
- * ARGUMENTS:
- *        ThreadHandle = Handle to the thread that should be resumed
- *        ResumeCount =  The resulting resume count.
- * RETURNS: Status
- */
-NTSTATUS
-STDCALL
-NtResumeThread(IN HANDLE ThreadHandle,
-               IN PULONG SuspendCount  OPTIONAL)
-{
-    PETHREAD Thread;
-    ULONG Prev;
-    KPROCESSOR_MODE PreviousMode;
-    NTSTATUS Status = STATUS_SUCCESS;
-
-    PAGED_CODE();
-
-    PreviousMode = ExGetPreviousMode();
-
-    DPRINT("NtResumeThead(ThreadHandle %lx  SuspendCount %p)\n",
-           ThreadHandle, SuspendCount);
-
-    /* Check buffer validity */
-    if(SuspendCount && PreviousMode != KernelMode) {
-
-        _SEH_TRY {
-
-            ProbeForWriteUlong(SuspendCount);
-         } _SEH_HANDLE {
-
-            Status = _SEH_GetExceptionCode();
-
-        } _SEH_END;
-
-        if(!NT_SUCCESS(Status)) return Status;
-    }
-
-    /* Get the Thread Object */
-    Status = ObReferenceObjectByHandle(ThreadHandle,
-                                       THREAD_SUSPEND_RESUME,
-                                       PsThreadType,
-                                       PreviousMode,
-                                       (PVOID*)&Thread,
-                                       NULL);
-    if (!NT_SUCCESS(Status)) {
-
-        return Status;
-    }
-
-    /* Call the Kernel Function */
-    Prev = KeResumeThread(&Thread->Tcb);
-
-    /* Return it */
-    if(SuspendCount) {
-
-        _SEH_TRY {
-
-            *SuspendCount = Prev;
-
-        } _SEH_HANDLE {
-
-            Status = _SEH_GetExceptionCode();
-
-        } _SEH_END;
-    }
-
-    /* Dereference and Return */
-    ObDereferenceObject ((PVOID)Thread);
-    return Status;
-}
-
-/*
- * FUNCTION: Increments a thread's suspend count
- * ARGUMENTS:
- *        ThreadHandle = Handle to the thread that should be resumed
- *        PreviousSuspendCount =  The resulting/previous suspend count.
- * REMARK:
- *        A thread will be suspended if its suspend count is greater than 0.
- *        This procedure maps to the win32 SuspendThread function. (
- *        documentation about the the suspend count can be found here aswell )
- *        The suspend count is not increased if it is greater than
- *        MAXIMUM_SUSPEND_COUNT.
- * RETURNS: Status
- */
-NTSTATUS
-STDCALL
-NtSuspendThread(IN HANDLE ThreadHandle,
-                IN PULONG PreviousSuspendCount  OPTIONAL)
-{
-    PETHREAD Thread;
-    ULONG Prev;
-    KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
-    NTSTATUS Status = STATUS_SUCCESS;
-    PAGED_CODE();
-
-    /* Check buffer validity */
-    if(PreviousSuspendCount && PreviousMode != KernelMode)
-    {
-        _SEH_TRY
-        {
-            ProbeForWriteUlong(PreviousSuspendCount);
-         }
-        _SEH_HANDLE
-        {
-            Status = _SEH_GetExceptionCode();
-        } _SEH_END;
-
-        if(!NT_SUCCESS(Status)) return Status;
-    }
-
-    /* Get the Thread Object */
-    Status = ObReferenceObjectByHandle(ThreadHandle,
-                                       THREAD_SUSPEND_RESUME,
-                                       PsThreadType,
-                                       PreviousMode,
-                                       (PVOID*)&Thread,
-                                       NULL);
-    if (!NT_SUCCESS(Status)) return Status;
-
-    /* Guard with SEH because KeSuspendThread can raise an exception */
-    _SEH_TRY
-    {
-        /* Make sure the thread isn't terminating */
-        if ((Thread != PsGetCurrentThread()) && (Thread->Terminated))
-        {
-            ObDereferenceObject(Thread);
-            return STATUS_THREAD_IS_TERMINATING;
-        }
-
-        /* Call the Kernel function */
-        Prev = KeSuspendThread(&Thread->Tcb);
-
-        /* Return the Previous Count */
-        if (PreviousSuspendCount) *PreviousSuspendCount = Prev;
-    }
-    _SEH_HANDLE
-    {
-        Status = _SEH_GetExceptionCode();
-
-        /* Don't fail if we merely couldn't write the handle back */
-        if (Status != STATUS_SUSPEND_COUNT_EXCEEDED) Status = STATUS_SUCCESS;
-    } _SEH_END;
-
-    /* Return */
-    ObDereferenceObject(Thread);
-    return Status;
-}
-
-
-/*
- * @unimplemented
- */
-NTSTATUS
-STDCALL
-NtSuspendProcess(IN HANDLE ProcessHandle)
-{
-    KPROCESSOR_MODE PreviousMode;
-    PEPROCESS Process;
-    NTSTATUS Status;
-
-    PAGED_CODE();
-
-    PreviousMode = ExGetPreviousMode();
-
-    Status = ObReferenceObjectByHandle(ProcessHandle,
-                                       PROCESS_SUSPEND_RESUME,
-                                       PsProcessType,
-                                       PreviousMode,
-                                       (PVOID*)&Process,
-                                       NULL);
-    if (NT_SUCCESS(Status))
-    {
-        /* FIXME */
-        Status = STATUS_NOT_IMPLEMENTED;
-        DPRINT1("NtSuspendProcess not yet implemented!\n");
-
-        ObDereferenceObject(Process);
-    }
-
-    return Status;
-}
-
-
-/*
- * @unimplemented
- */
-NTSTATUS
-STDCALL
-NtResumeProcess(IN HANDLE ProcessHandle)
-{
-    KPROCESSOR_MODE PreviousMode;
-    PEPROCESS Process;
-    NTSTATUS Status;
-
-    PAGED_CODE();
-
-    PreviousMode = ExGetPreviousMode();
-
-    Status = ObReferenceObjectByHandle(ProcessHandle,
-                                       PROCESS_SUSPEND_RESUME,
-                                       PsProcessType,
-                                       PreviousMode,
-                                       (PVOID*)&Process,
-                                       NULL);
-    if (NT_SUCCESS(Status))
-    {
-        /* FIXME */
-        Status = STATUS_NOT_IMPLEMENTED;
-        DPRINT1("NtResumeProcess not yet implemented!\n");
-
-        ObDereferenceObject(Process);
-    }
-
-    return Status;
-}
-
-/* EOF */
Modified: trunk/reactos/ntoskrnl/ps/thread.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ps/thread.c?rev=2…
==============================================================================
--- trunk/reactos/ntoskrnl/ps/thread.c (original)
+++ trunk/reactos/ntoskrnl/ps/thread.c Tue Jul 18 18:34:06 2006
@@ -840,14 +840,6 @@
     return(STATUS_SUCCESS);
 }
-NTSTATUS
-NTAPI
-NtTestAlert(VOID)
-{
-    /* Check and Alert Thread if needed */
-    return KeTestAlertThread(ExGetPreviousMode()) ? STATUS_ALERTED : STATUS_SUCCESS;
-}
-
 /*
  * @implemented
  */