1*c2c66affSColin Finck /*
2*c2c66affSColin Finck  * PROJECT:         ReactOS kernel-mode tests
3*c2c66affSColin Finck  * LICENSE:         LGPLv2+ - See COPYING.LIB in the top level directory
4*c2c66affSColin Finck  * PURPOSE:         Kernel-Mode Test Suite Executive Regressions KM-Test
5*c2c66affSColin Finck  * PROGRAMMER:      Aleksey Bragin <aleksey@reactos.org>
6*c2c66affSColin Finck  */
7*c2c66affSColin Finck 
8*c2c66affSColin Finck /* TODO: this test doesn't process any test results; it also takes very long */
9*c2c66affSColin Finck 
10*c2c66affSColin Finck #include <kmt_test.h>
11*c2c66affSColin Finck 
12*c2c66affSColin Finck #define NDEBUG
13*c2c66affSColin Finck #include <debug.h>
14*c2c66affSColin Finck 
KeStallExecutionProcessorTest(VOID)15*c2c66affSColin Finck static VOID KeStallExecutionProcessorTest(VOID)
16*c2c66affSColin Finck {
17*c2c66affSColin Finck     ULONG i;
18*c2c66affSColin Finck     LARGE_INTEGER TimeStart, TimeFinish;
19*c2c66affSColin Finck 
20*c2c66affSColin Finck     DPRINT1("Waiting for 30 secs with 50us stalls...\n");
21*c2c66affSColin Finck     KeQuerySystemTime(&TimeStart);
22*c2c66affSColin Finck     for (i = 0; i < (30*1000*20); i++)
23*c2c66affSColin Finck     {
24*c2c66affSColin Finck         KeStallExecutionProcessor(50);
25*c2c66affSColin Finck     }
26*c2c66affSColin Finck     KeQuerySystemTime(&TimeFinish);
27*c2c66affSColin Finck     DPRINT1("Time elapsed: %d secs\n", (TimeFinish.QuadPart - TimeStart.QuadPart) / 10000000); // 30
28*c2c66affSColin Finck 
29*c2c66affSColin Finck     DPRINT1("Waiting for 30 secs with 1000us stalls...\n");
30*c2c66affSColin Finck     KeQuerySystemTime(&TimeStart);
31*c2c66affSColin Finck     for (i = 0; i < (30*1000); i++)
32*c2c66affSColin Finck     {
33*c2c66affSColin Finck         KeStallExecutionProcessor(1000);
34*c2c66affSColin Finck     }
35*c2c66affSColin Finck     KeQuerySystemTime(&TimeFinish);
36*c2c66affSColin Finck     DPRINT1("Time elapsed: %d secs\n", (TimeFinish.QuadPart - TimeStart.QuadPart) / 10000000); // 30
37*c2c66affSColin Finck 
38*c2c66affSColin Finck     DPRINT1("Waiting for 30 secs with 1us stalls...\n");
39*c2c66affSColin Finck     KeQuerySystemTime(&TimeStart);
40*c2c66affSColin Finck     for (i = 0; i < (30*1000*1000); i++)
41*c2c66affSColin Finck     {
42*c2c66affSColin Finck         KeStallExecutionProcessor(1);
43*c2c66affSColin Finck     }
44*c2c66affSColin Finck     KeQuerySystemTime(&TimeFinish);
45*c2c66affSColin Finck     DPRINT1("Time elapsed: %d secs\n", (TimeFinish.QuadPart - TimeStart.QuadPart) / 10000000); // 43
46*c2c66affSColin Finck 
47*c2c66affSColin Finck     DPRINT1("Waiting for 30 secs with one huge stall...\n");
48*c2c66affSColin Finck     KeQuerySystemTime(&TimeStart);
49*c2c66affSColin Finck     KeStallExecutionProcessor(30*1000000);
50*c2c66affSColin Finck     KeQuerySystemTime(&TimeFinish);
51*c2c66affSColin Finck     DPRINT1("Time elapsed: %d secs\n", (TimeFinish.QuadPart - TimeStart.QuadPart) / 10000000); // 30
52*c2c66affSColin Finck }
53*c2c66affSColin Finck 
START_TEST(KeProcessor)54*c2c66affSColin Finck START_TEST(KeProcessor)
55*c2c66affSColin Finck {
56*c2c66affSColin Finck     KeStallExecutionProcessorTest();
57*c2c66affSColin Finck }
58