[KMTEST]
authorAleksey Bragin <aleksey@reactos.org>
Tue, 27 Apr 2010 13:06:42 +0000 (13:06 +0000)
committerAleksey Bragin <aleksey@reactos.org>
Tue, 27 Apr 2010 13:06:42 +0000 (13:06 +0000)
- Add KeStallExecutionProcessor test.

svn path=/trunk/; revision=47047

rostests/drivers/kmtest/kmtest.c
rostests/drivers/kmtest/kmtest.rbuild
rostests/drivers/kmtest/ntos_ke.c [new file with mode: 0644]

index 948797a..964486a 100644 (file)
@@ -106,6 +106,7 @@ PWCHAR CreateLowerDeviceRegistryKey(PUNICODE_STRING RegistryPath, PWCHAR NewDriv
  * Test Declarations
  */
 VOID NtoskrnlIoTests();
+VOID NtoskrnlKeTests();
 VOID NtoskrnlObTest();
 VOID NtoskrnlExecutiveTests();
 VOID NtoskrnlPoolsTest();
@@ -214,6 +215,7 @@ DriverEntry(PDRIVER_OBJECT DriverObject,
     ThisDriverObject = DriverObject;
 
     NtoskrnlExecutiveTests();
+    NtoskrnlKeTests();
     NtoskrnlIoTests();
     NtoskrnlObTest();
     NtoskrnlPoolsTest();
index e45f8a6..9219db9 100644 (file)
@@ -12,6 +12,7 @@
        <file>reghelper.c</file>
        <file>ntos_ex.c</file>
        <file>ntos_io.c</file>
+       <file>ntos_ke.c</file>
        <file>ntos_ob.c</file>
        <file>ntos_pools.c</file>
        <file>kmtest.rc</file>
diff --git a/rostests/drivers/kmtest/ntos_ke.c b/rostests/drivers/kmtest/ntos_ke.c
new file mode 100644 (file)
index 0000000..1c60322
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * NTOSKRNL Executive Regressions KM-Test
+ * ReactOS Kernel Mode Regression Testing framework
+ *
+ * Copyright 2006 Aleksey Bragin <aleksey@reactos.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; see the file COPYING.LIB.
+ * If not, write to the Free Software Foundation,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+/* INCLUDES *******************************************************************/
+
+#include <ddk/ntddk.h>
+#include <ntifs.h>
+#include <ndk/ntndk.h>
+#include "kmtest.h"
+
+#define NDEBUG
+#include "debug.h"
+
+/* PRIVATE FUNCTIONS ***********************************************************/
+
+VOID
+NTAPI
+KeStallTest()
+{
+    ULONG i;
+    LARGE_INTEGER TimeStart, TimeFinish;
+
+    StartTest();
+
+    DPRINT1("Waiting for 30 secs with 50us stalls...\n");
+    KeQuerySystemTime(&TimeStart);
+    for (i = 0; i < (30*1000*20); i++)
+    {
+        KeStallExecutionProcessor(50);
+    }
+    KeQuerySystemTime(&TimeFinish);
+    DPRINT1("Time elapsed: %d secs\n", (TimeFinish.QuadPart - TimeStart.QuadPart) / 10000000); // 30
+
+    DPRINT1("Waiting for 30 secs with 1000us stalls...\n");
+    KeQuerySystemTime(&TimeStart);
+    for (i = 0; i < (30*1000); i++)
+    {
+        KeStallExecutionProcessor(1000);
+    }
+    KeQuerySystemTime(&TimeFinish);
+    DPRINT1("Time elapsed: %d secs\n", (TimeFinish.QuadPart - TimeStart.QuadPart) / 10000000); // 30
+
+    DPRINT1("Waiting for 30 secs with 1us stalls...\n");
+    KeQuerySystemTime(&TimeStart);
+    for (i = 0; i < (30*1000*1000); i++)
+    {
+        KeStallExecutionProcessor(1);
+    }
+    KeQuerySystemTime(&TimeFinish);
+    DPRINT1("Time elapsed: %d secs\n", (TimeFinish.QuadPart - TimeStart.QuadPart) / 10000000); // 43
+
+    DPRINT1("Waiting for 30 secs with one huge stall...\n");
+    KeQuerySystemTime(&TimeStart);
+    KeStallExecutionProcessor(30*1000000);
+    KeQuerySystemTime(&TimeFinish);
+    DPRINT1("Time elapsed: %d secs\n", (TimeFinish.QuadPart - TimeStart.QuadPart) / 10000000); // 30
+
+    FinishTest("NTOSKRNL KeStallmanExecution test");
+}
+
+/* PUBLIC FUNCTIONS ***********************************************************/
+
+VOID
+NtoskrnlKeTests()
+{
+    KeStallTest();
+}