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 +