From 72cf5d6f12daafc69c4b50f7803613d5fd6ba65d Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Wed, 22 Jan 2014 01:09:49 +0100 Subject: [PATCH] kernel32: Forward SleepConditionVariableSRW to ntdll. --- dlls/kernel32/kernel32.spec | 1 + dlls/kernel32/sync.c | 18 ++++++++++++++++++ include/winbase.h | 1 + 3 files changed, 20 insertions(+) diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec index 3bb42559d84..f7f3320b2a5 100644 --- a/dlls/kernel32/kernel32.spec +++ b/dlls/kernel32/kernel32.spec @@ -1196,6 +1196,7 @@ @ stdcall SizeofResource(long long) @ stdcall Sleep(long) @ stdcall SleepConditionVariableCS(ptr ptr long) +@ stdcall SleepConditionVariableSRW(ptr ptr long long) @ stdcall SleepEx(long long) @ stdcall SuspendThread(long) @ stdcall SwitchToFiber(ptr) diff --git a/dlls/kernel32/sync.c b/dlls/kernel32/sync.c index 2b7f4b03ce7..f77637c92f0 100644 --- a/dlls/kernel32/sync.c +++ b/dlls/kernel32/sync.c @@ -2339,3 +2339,21 @@ BOOL WINAPI SleepConditionVariableCS( CONDITION_VARIABLE *variable, CRITICAL_SEC } return TRUE; } + +/*********************************************************************** + * SleepConditionVariableSRW (KERNEL32.@) + */ +BOOL WINAPI SleepConditionVariableSRW( RTL_CONDITION_VARIABLE *variable, RTL_SRWLOCK *lock, DWORD timeout, ULONG flags ) +{ + NTSTATUS status; + LARGE_INTEGER time; + + status = RtlSleepConditionVariableSRW( variable, lock, get_nt_timeout( &time, timeout ), flags ); + + if (status != STATUS_SUCCESS) + { + SetLastError( RtlNtStatusToDosError(status) ); + return FALSE; + } + return TRUE; +} diff --git a/include/winbase.h b/include/winbase.h index 3c620e4646c..2d01c45dfd4 100644 --- a/include/winbase.h +++ b/include/winbase.h @@ -2363,6 +2363,7 @@ WINBASEAPI DWORD WINAPI SignalObjectAndWait(HANDLE,HANDLE,DWORD,BOOL); WINBASEAPI DWORD WINAPI SizeofResource(HMODULE,HRSRC); WINBASEAPI VOID WINAPI Sleep(DWORD); WINBASEAPI BOOL WINAPI SleepConditionVariableCS(PCONDITION_VARIABLE,PCRITICAL_SECTION,DWORD); +WINBASEAPI BOOL WINAPI SleepConditionVariableSRW(PCONDITION_VARIABLE,PSRWLOCK,DWORD,ULONG); WINBASEAPI DWORD WINAPI SleepEx(DWORD,BOOL); WINBASEAPI DWORD WINAPI SuspendThread(HANDLE); WINBASEAPI void WINAPI SwitchToFiber(LPVOID); -- 2.11.4.GIT