From 3bd0205d06dcb64c476913ef78eed2a5d56f6b3f Mon Sep 17 00:00:00 2001 From: Magnus Olsen Date: Mon, 3 Jul 2006 21:29:32 +0000 Subject: [PATCH] test case for QueueUserWorkItem from bug 1609 by w3seek svn path=/trunk/; revision=22810 --- reactos/regtests/directory.rbuild | 3 ++ reactos/regtests/queuetest/queuetest.c | 35 +++++++++++++++++++++ reactos/regtests/queuetest/queuetest.rbuild | 4 +++ 3 files changed, 42 insertions(+) create mode 100644 reactos/regtests/queuetest/queuetest.c create mode 100644 reactos/regtests/queuetest/queuetest.rbuild diff --git a/reactos/regtests/directory.rbuild b/reactos/regtests/directory.rbuild index 7a2522dbe0f..1fe514df94c 100644 --- a/reactos/regtests/directory.rbuild +++ b/reactos/regtests/directory.rbuild @@ -2,6 +2,9 @@ + + + diff --git a/reactos/regtests/queuetest/queuetest.c b/reactos/regtests/queuetest/queuetest.c new file mode 100644 index 00000000000..386a3b15c5f --- /dev/null +++ b/reactos/regtests/queuetest/queuetest.c @@ -0,0 +1,35 @@ +/* Compile with gcc -o queuetest.exe queuetest.c */ + +#include +#include + +#define WT_EXECUTEINPERSISTENTIOTHREAD 0x00000040 +BOOL WINAPI QueueUserWorkItem(LPTHREAD_START_ROUTINE,PVOID,ULONG); + +#define TestProc(n) \ +DWORD CALLBACK TestProc##n(void *ctx)\ +{\ + printf("TestProc%d thread 0x%x context 0x%p\n", n, GetCurrentThreadId(), ctx);\ + return 0;\ +} + +TestProc(1) +TestProc(2) +TestProc(3) +TestProc(4) +TestProc(5) +TestProc(6) + +int __cdecl +main(int argc, char* argv[]) +{ + PVOID x = (PVOID)0x12345; + QueueUserWorkItem(TestProc1, x, 0); + QueueUserWorkItem(TestProc2, x, WT_EXECUTELONGFUNCTION); + QueueUserWorkItem(TestProc3, x, WT_EXECUTEINIOTHREAD); + QueueUserWorkItem(TestProc4, x, WT_EXECUTEINIOTHREAD | WT_EXECUTELONGFUNCTION); + QueueUserWorkItem(TestProc5, x, WT_EXECUTEINPERSISTENTTHREAD); + QueueUserWorkItem(TestProc6, x, WT_EXECUTEINPERSISTENTIOTHREAD); + Sleep(INFINITE); + return 0; +} diff --git a/reactos/regtests/queuetest/queuetest.rbuild b/reactos/regtests/queuetest/queuetest.rbuild new file mode 100644 index 00000000000..14458dd6dcb --- /dev/null +++ b/reactos/regtests/queuetest/queuetest.rbuild @@ -0,0 +1,4 @@ + + + queuetest.c +