Alexandre Julliard : kernel32: Move condition variable functions to kernelbase.
Alexandre Julliard
julliard at winehq.org
Mon Jul 1 15:15:15 CDT 2019
Module: wine
Branch: master
Commit: 9585990a46442a36dd0ecca770847f0b56966eea
URL: https://source.winehq.org/git/wine.git/?a=commit;h=9585990a46442a36dd0ecca770847f0b56966eea
Author: Alexandre Julliard <julliard at winehq.org>
Date: Thu Jun 27 17:15:13 2019 +0200
kernel32: Move condition variable functions to kernelbase.
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/kernel32/kernel32.spec | 4 ++--
dlls/kernel32/sync.c | 36 ------------------------------------
dlls/kernelbase/kernelbase.spec | 4 ++--
dlls/kernelbase/sync.c | 38 ++++++++++++++++++++++++++++++++++++++
4 files changed, 42 insertions(+), 40 deletions(-)
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index bd4f551..c42ec44 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -1482,8 +1482,8 @@
@ stdcall SignalObjectAndWait(long long long long)
@ stdcall SizeofResource(long long)
@ stdcall Sleep(long)
-@ stdcall SleepConditionVariableCS(ptr ptr long)
-@ stdcall SleepConditionVariableSRW(ptr ptr long long)
+@ stdcall -import SleepConditionVariableCS(ptr ptr long)
+@ stdcall -import SleepConditionVariableSRW(ptr ptr long long)
@ stdcall SleepEx(long long)
# @ stub SortCloseHandle
# @ stub SortGetHandle
diff --git a/dlls/kernel32/sync.c b/dlls/kernel32/sync.c
index 036bf85..be92aee 100644
--- a/dlls/kernel32/sync.c
+++ b/dlls/kernel32/sync.c
@@ -1875,39 +1875,3 @@ __ASM_STDCALL_FUNC(InterlockedDecrement, 4,
"ret $4")
#endif /* __i386__ */
-
-/***********************************************************************
- * SleepConditionVariableCS (KERNEL32.@)
- */
-BOOL WINAPI SleepConditionVariableCS( CONDITION_VARIABLE *variable, CRITICAL_SECTION *crit, DWORD timeout )
-{
- NTSTATUS status;
- LARGE_INTEGER time;
-
- status = RtlSleepConditionVariableCS( variable, crit, get_nt_timeout( &time, timeout ) );
-
- if (status != STATUS_SUCCESS)
- {
- SetLastError( RtlNtStatusToDosError(status) );
- return FALSE;
- }
- 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/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec
index 7851675..52982b2 100644
--- a/dlls/kernelbase/kernelbase.spec
+++ b/dlls/kernelbase/kernelbase.spec
@@ -1512,8 +1512,8 @@
@ stdcall SignalObjectAndWait(long long long long) kernel32.SignalObjectAndWait
@ stdcall SizeofResource(long long) kernel32.SizeofResource
@ stdcall Sleep(long) kernel32.Sleep
-@ stdcall SleepConditionVariableCS(ptr ptr long) kernel32.SleepConditionVariableCS
-@ stdcall SleepConditionVariableSRW(ptr ptr long long) kernel32.SleepConditionVariableSRW
+@ stdcall SleepConditionVariableCS(ptr ptr long)
+@ stdcall SleepConditionVariableSRW(ptr ptr long long)
@ stdcall SleepEx(long long) kernel32.SleepEx
@ stub SpecialMBToWC
@ stub StartThreadpoolIo
diff --git a/dlls/kernelbase/sync.c b/dlls/kernelbase/sync.c
index 5ab9005..ba64b85 100644
--- a/dlls/kernelbase/sync.c
+++ b/dlls/kernelbase/sync.c
@@ -45,6 +45,14 @@ static inline BOOL is_version_nt(void)
return !(GetVersion() & 0x80000000);
}
+/* helper for kernel32->ntdll timeout format conversion */
+static inline LARGE_INTEGER *get_nt_timeout( LARGE_INTEGER *time, DWORD timeout )
+{
+ if (timeout == INFINITE) return NULL;
+ time->QuadPart = (ULONGLONG)timeout * -10000;
+ return time;
+}
+
/***********************************************************************
* BaseGetNamedObjectDirectory (kernelbase.@)
@@ -719,3 +727,33 @@ HANDLE WINAPI DECLSPEC_HOTPATCH OpenFileMappingW( DWORD access, BOOL inherit, LP
}
return ret;
}
+
+
+/***********************************************************************
+ * Condition variables
+ ***********************************************************************/
+
+
+/***********************************************************************
+ * SleepConditionVariableCS (kernelbase.@)
+ */
+BOOL WINAPI DECLSPEC_HOTPATCH SleepConditionVariableCS( CONDITION_VARIABLE *variable,
+ CRITICAL_SECTION *crit, DWORD timeout )
+{
+ LARGE_INTEGER time;
+
+ return set_ntstatus( RtlSleepConditionVariableCS( variable, crit, get_nt_timeout( &time, timeout )));
+}
+
+
+/***********************************************************************
+ * SleepConditionVariableSRW (kernelbase.@)
+ */
+BOOL WINAPI DECLSPEC_HOTPATCH SleepConditionVariableSRW( RTL_CONDITION_VARIABLE *variable,
+ RTL_SRWLOCK *lock, DWORD timeout, ULONG flags )
+{
+ LARGE_INTEGER time;
+
+ return set_ntstatus( RtlSleepConditionVariableSRW( variable, lock,
+ get_nt_timeout( &time, timeout ), flags ));
+}
More information about the wine-cvs
mailing list