Zebediah Figura : ntoskrnl.exe/tests: Add tests for waiting on timers.

Alexandre Julliard julliard at winehq.org
Wed Nov 28 14:11:48 CST 2018


Module: wine
Branch: master
Commit: 49e580122a1d280b920210ef2d47b1fbacbd1b16
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=49e580122a1d280b920210ef2d47b1fbacbd1b16

Author: Zebediah Figura <z.figura12 at gmail.com>
Date:   Tue Nov 27 19:43:08 2018 -0600

ntoskrnl.exe/tests: Add tests for waiting on timers.

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntoskrnl.exe/tests/driver.c | 51 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/dlls/ntoskrnl.exe/tests/driver.c b/dlls/ntoskrnl.exe/tests/driver.c
index 8294882..17e54cd 100644
--- a/dlls/ntoskrnl.exe/tests/driver.c
+++ b/dlls/ntoskrnl.exe/tests/driver.c
@@ -260,6 +260,8 @@ static void test_sync(void)
 {
     KSEMAPHORE semaphore, semaphore2;
     KEVENT manual_event, auto_event;
+    KTIMER timer;
+    LARGE_INTEGER timeout;
     void *objs[2];
     NTSTATUS ret;
     int i;
@@ -444,6 +446,55 @@ static void test_sync(void)
     ok(ret == 0, "got %#x\n", ret);
 
     run_thread(mutex_thread, (void *)0);
+
+    /* test timers */
+    KeInitializeTimerEx(&timer, NotificationTimer);
+
+    timeout.QuadPart = -100;
+    KeSetTimerEx(&timer, timeout, 0, NULL);
+
+    ret = wait_single(&timer, 0);
+    ok(ret == WAIT_TIMEOUT, "got %#x\n", ret);
+
+    ret = wait_single(&timer, -200);
+    ok(ret == 0, "got %#x\n", ret);
+
+    ret = wait_single(&timer, 0);
+    ok(ret == 0, "got %#x\n", ret);
+
+    KeCancelTimer(&timer);
+    KeInitializeTimerEx(&timer, SynchronizationTimer);
+
+    KeSetTimerEx(&timer, timeout, 0, NULL);
+
+    ret = wait_single(&timer, 0);
+    ok(ret == WAIT_TIMEOUT, "got %#x\n", ret);
+
+    ret = wait_single(&timer, -200);
+    ok(ret == 0, "got %#x\n", ret);
+
+    ret = wait_single(&timer, 0);
+    ok(ret == WAIT_TIMEOUT, "got %#x\n", ret);
+
+    KeCancelTimer(&timer);
+    KeSetTimerEx(&timer, timeout, 10, NULL);
+
+    ret = wait_single(&timer, 0);
+    ok(ret == WAIT_TIMEOUT, "got %#x\n", ret);
+
+    ret = wait_single(&timer, -200);
+    ok(ret == 0, "got %#x\n", ret);
+
+    ret = wait_single(&timer, 0);
+    ok(ret == WAIT_TIMEOUT, "got %#x\n", ret);
+
+    ret = wait_single(&timer, -20 * 10000);
+    ok(ret == 0, "got %#x\n", ret);
+
+    ret = wait_single(&timer, -20 * 10000);
+    ok(ret == 0, "got %#x\n", ret);
+
+    KeCancelTimer(&timer);
 }
 
 static NTSTATUS main_test(IRP *irp, IO_STACK_LOCATION *stack, ULONG_PTR *info)




More information about the wine-cvs mailing list