[PATCH 5/6] ntoskrnl.exe/tests: Add tests for waiting on timers.
Zebediah Figura
z.figura12 at gmail.com
Tue Nov 27 19:43:08 CST 2018
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
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 82948823c5..17e54cd508 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)
--
2.14.1
More information about the wine-devel
mailing list