From: quininer quininer@live.com
--- dlls/kernel32/tests/sync.c | 21 +++++++++++++++++++++ dlls/kernelbase/sync.c | 6 ++++++ 2 files changed, 27 insertions(+)
diff --git a/dlls/kernel32/tests/sync.c b/dlls/kernel32/tests/sync.c index 56a9d6e4859..a5b4c13b2b7 100644 --- a/dlls/kernel32/tests/sync.c +++ b/dlls/kernel32/tests/sync.c @@ -2841,6 +2841,26 @@ static void test_QueueUserAPC(void) ok(apc_count == 1, "APC count %u\n", apc_count); }
+static DWORD WINAPI barrier_worker(LPVOID b) { + SYNCHRONIZATION_BARRIER *barrier = (SYNCHRONIZATION_BARRIER*)b; + EnterSynchronizationBarrier(barrier, 0); + return 0; +} + +static void test_barrier(void) +{ + SYNCHRONIZATION_BARRIER barrier; + DWORD dummy; + + InitializeSynchronizationBarrier(&barrier, 3, 0); + + CreateThread(NULL, 0, barrier_worker, &barrier, 0, &dummy); + CreateThread(NULL, 0, barrier_worker, &barrier, 0, &dummy); + + EnterSynchronizationBarrier(&barrier, 0); + DeleteSynchronizationBarrier(&barrier); +} + START_TEST(sync) { char **argv; @@ -2912,4 +2932,5 @@ START_TEST(sync) test_alertable_wait(); test_apc_deadlock(); test_crit_section(); + test_barrier(); } diff --git a/dlls/kernelbase/sync.c b/dlls/kernelbase/sync.c index 6181006802f..f28862e9ee3 100644 --- a/dlls/kernelbase/sync.c +++ b/dlls/kernelbase/sync.c @@ -1705,6 +1705,9 @@ BOOL WINAPI DECLSPEC_HOTPATCH InitializeSynchronizationBarrier( LPSYNCHRONIZATIO return TRUE; }
+/*********************************************************************** + * EnterSynchronizationBarrier (kernelbase.@) + */ BOOL WINAPI DECLSPEC_HOTPATCH EnterSynchronizationBarrier( LPSYNCHRONIZATION_BARRIER lpBarrier, DWORD dwFlags ) { @@ -1734,6 +1737,9 @@ BOOL WINAPI DECLSPEC_HOTPATCH EnterSynchronizationBarrier( LPSYNCHRONIZATION_BAR return hint; }
+/*********************************************************************** + * DeleteSynchronizationBarrier (kernelbase.@) + */ BOOL WINAPI DECLSPEC_HOTPATCH DeleteSynchronizationBarrier( LPSYNCHRONIZATION_BARRIER lpBarrier ) { return TRUE;