- Add KeStallExecutionProcessor test.

svn path=/trunk/; revision=47047
This commit is contained in:
Aleksey Bragin 2010-04-27 13:06:42 +00:00
parent 2e62657924
commit e2463c955c
3 changed files with 89 additions and 0 deletions

View 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();

View 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>

View file

@ -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();
}