Alexandre Julliard : kernel32: Move semaphore functions to kernelbase.

Alexandre Julliard julliard at winehq.org
Mon Jul 1 15:15:15 CDT 2019


Module: wine
Branch: master
Commit: 591266881c4c14b913ac840ed0ae03c7e516e3d7
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=591266881c4c14b913ac840ed0ae03c7e516e3d7

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Jun 27 16:08:22 2019 +0200

kernel32: Move semaphore functions to kernelbase.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/kernel32/kernel32.spec     |  8 ++---
 dlls/kernel32/sync.c            | 66 --------------------------------------
 dlls/kernelbase/kernelbase.spec |  8 ++---
 dlls/kernelbase/sync.c          | 70 +++++++++++++++++++++++++++++++++++++++++
 4 files changed, 78 insertions(+), 74 deletions(-)

diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index 4868df8..1b5a0ae 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -320,8 +320,8 @@
 @ stdcall CreateRemoteThreadEx(long ptr long ptr ptr long ptr ptr)
 @ stdcall CreateSemaphoreA(ptr long long str)
 @ stdcall CreateSemaphoreExA(ptr long long str long long)
-@ stdcall CreateSemaphoreExW(ptr long long wstr long long)
-@ stdcall CreateSemaphoreW(ptr long long wstr)
+@ stdcall -import CreateSemaphoreExW(ptr long long wstr long long)
+@ stdcall -import CreateSemaphoreW(ptr long long wstr)
 @ stdcall CreateSocketHandle()
 @ stdcall CreateSymbolicLinkA(str str long)
 # @ stub CreateSymbolicLinkTransactedA
@@ -1128,7 +1128,7 @@
 # @ stub OpenProcessToken
 @ stdcall OpenProfileUserMapping()
 @ stdcall OpenSemaphoreA(long long str)
-@ stdcall OpenSemaphoreW(long long wstr)
+@ stdcall -import OpenSemaphoreW(long long wstr)
 @ stdcall OpenThread(long long long)
 # @ stub OpenThreadToken
 @ stdcall -i386 OpenVxDHandle(long)
@@ -1258,7 +1258,7 @@
 @ stdcall ReleaseActCtx(ptr)
 @ stdcall -import ReleaseMutex(long)
 @ stdcall ReleaseMutexWhenCallbackReturns(ptr long) ntdll.TpCallbackReleaseMutexOnCompletion
-@ stdcall ReleaseSemaphore(long long ptr)
+@ stdcall -import ReleaseSemaphore(long long ptr)
 @ stdcall ReleaseSemaphoreWhenCallbackReturns(ptr long long) ntdll.TpCallbackReleaseSemaphoreOnCompletion
 @ stdcall ReleaseSRWLockExclusive(ptr) ntdll.RtlReleaseSRWLockExclusive
 @ stdcall ReleaseSRWLockShared(ptr) ntdll.RtlReleaseSRWLockShared
diff --git a/dlls/kernel32/sync.c b/dlls/kernel32/sync.c
index 6bfcfee..1303ea4 100644
--- a/dlls/kernel32/sync.c
+++ b/dlls/kernel32/sync.c
@@ -453,15 +453,6 @@ HANDLE WINAPI DECLSPEC_HOTPATCH CreateSemaphoreA( SECURITY_ATTRIBUTES *sa, LONG
 
 
 /***********************************************************************
- *           CreateSemaphoreW   (KERNEL32.@)
- */
-HANDLE WINAPI DECLSPEC_HOTPATCH CreateSemaphoreW( SECURITY_ATTRIBUTES *sa, LONG initial, LONG max, LPCWSTR name )
-{
-    return CreateSemaphoreExW( sa, initial, max, name, 0, SEMAPHORE_ALL_ACCESS );
-}
-
-
-/***********************************************************************
  *           CreateSemaphoreExA   (KERNEL32.@)
  */
 HANDLE WINAPI DECLSPEC_HOTPATCH CreateSemaphoreExA( SECURITY_ATTRIBUTES *sa, LONG initial, LONG max,
@@ -481,28 +472,6 @@ HANDLE WINAPI DECLSPEC_HOTPATCH CreateSemaphoreExA( SECURITY_ATTRIBUTES *sa, LON
 
 
 /***********************************************************************
- *           CreateSemaphoreExW   (KERNEL32.@)
- */
-HANDLE WINAPI DECLSPEC_HOTPATCH CreateSemaphoreExW( SECURITY_ATTRIBUTES *sa, LONG initial, LONG max,
-                                                    LPCWSTR name, DWORD flags, DWORD access )
-{
-    HANDLE ret = 0;
-    UNICODE_STRING nameW;
-    OBJECT_ATTRIBUTES attr;
-    NTSTATUS status;
-
-    get_create_object_attributes( &attr, &nameW, sa, name );
-
-    status = NtCreateSemaphore( &ret, access, &attr, initial, max );
-    if (status == STATUS_OBJECT_NAME_EXISTS)
-        SetLastError( ERROR_ALREADY_EXISTS );
-    else
-        SetLastError( RtlNtStatusToDosError(status) );
-    return ret;
-}
-
-
-/***********************************************************************
  *           OpenSemaphoreA   (KERNEL32.@)
  */
 HANDLE WINAPI DECLSPEC_HOTPATCH OpenSemaphoreA( DWORD access, BOOL inherit, LPCSTR name )
@@ -520,41 +489,6 @@ HANDLE WINAPI DECLSPEC_HOTPATCH OpenSemaphoreA( DWORD access, BOOL inherit, LPCS
 }
 
 
-/***********************************************************************
- *           OpenSemaphoreW   (KERNEL32.@)
- */
-HANDLE WINAPI DECLSPEC_HOTPATCH OpenSemaphoreW( DWORD access, BOOL inherit, LPCWSTR name )
-{
-    HANDLE ret;
-    UNICODE_STRING nameW;
-    OBJECT_ATTRIBUTES attr;
-    NTSTATUS status;
-
-    if (!is_version_nt()) access = SEMAPHORE_ALL_ACCESS;
-
-    if (!get_open_object_attributes( &attr, &nameW, inherit, name )) return 0;
-
-    status = NtOpenSemaphore( &ret, access, &attr );
-    if (status != STATUS_SUCCESS)
-    {
-        SetLastError( RtlNtStatusToDosError(status) );
-        return 0;
-    }
-    return ret;
-}
-
-
-/***********************************************************************
- *           ReleaseSemaphore   (KERNEL32.@)
- */
-BOOL WINAPI DECLSPEC_HOTPATCH ReleaseSemaphore( HANDLE handle, LONG count, LONG *previous )
-{
-    NTSTATUS status = NtReleaseSemaphore( handle, count, (PULONG)previous );
-    if (status) SetLastError( RtlNtStatusToDosError(status) );
-    return !status;
-}
-
-
 /*
  * Jobs
  */
diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec
index f0c87ae..dca79c4 100644
--- a/dlls/kernelbase/kernelbase.spec
+++ b/dlls/kernelbase/kernelbase.spec
@@ -214,8 +214,8 @@
 @ stdcall CreateRemoteThread(long ptr long ptr long long ptr) kernel32.CreateRemoteThread
 @ stdcall CreateRemoteThreadEx(long ptr long ptr ptr long ptr ptr) kernel32.CreateRemoteThreadEx
 @ stdcall CreateRestrictedToken(long long long ptr long ptr long ptr ptr)
-@ stdcall CreateSemaphoreExW(ptr long long wstr long long) kernel32.CreateSemaphoreExW
-@ stdcall CreateSemaphoreW(ptr long long wstr) kernel32.CreateSemaphoreW
+@ stdcall CreateSemaphoreExW(ptr long long wstr long long)
+@ stdcall CreateSemaphoreW(ptr long long wstr)
 # @ stub CreateStateAtom
 # @ stub CreateStateChangeNotification
 # @ stub CreateStateContainer
@@ -994,7 +994,7 @@
 @ stdcall OpenProcess(long long long) kernel32.OpenProcess
 @ stdcall OpenProcessToken(long long ptr)
 @ stub OpenRegKey
-@ stdcall OpenSemaphoreW(long long wstr) kernel32.OpenSemaphoreW
+@ stdcall OpenSemaphoreW(long long wstr)
 # @ stub OpenState
 # @ stub OpenStateAtom
 # @ stub OpenStateExplicit
@@ -1328,7 +1328,7 @@
 @ stdcall ReleaseMutexWhenCallbackReturns(ptr long) kernel32.ReleaseMutexWhenCallbackReturns
 @ stdcall ReleaseSRWLockExclusive(ptr) kernel32.ReleaseSRWLockExclusive
 @ stdcall ReleaseSRWLockShared(ptr) kernel32.ReleaseSRWLockShared
-@ stdcall ReleaseSemaphore(long long ptr) kernel32.ReleaseSemaphore
+@ stdcall ReleaseSemaphore(long long ptr)
 @ stdcall ReleaseSemaphoreWhenCallbackReturns(ptr long long) kernel32.ReleaseSemaphoreWhenCallbackReturns
 # @ stub ReleaseStateLock
 @ stdcall RemapPredefinedHandleInternal(long long)
diff --git a/dlls/kernelbase/sync.c b/dlls/kernelbase/sync.c
index ebbb209..58d62ed 100644
--- a/dlls/kernelbase/sync.c
+++ b/dlls/kernelbase/sync.c
@@ -363,3 +363,73 @@ BOOL WINAPI DECLSPEC_HOTPATCH ReleaseMutex( HANDLE handle )
 {
     return set_ntstatus( NtReleaseMutant( handle, NULL ));
 }
+
+
+/***********************************************************************
+ * Semaphores
+ ***********************************************************************/
+
+
+/***********************************************************************
+ *           CreateSemaphoreW   (kernelbase.@)
+ */
+HANDLE WINAPI DECLSPEC_HOTPATCH CreateSemaphoreW( SECURITY_ATTRIBUTES *sa, LONG initial,
+                                                  LONG max, LPCWSTR name )
+{
+    return CreateSemaphoreExW( sa, initial, max, name, 0, SEMAPHORE_ALL_ACCESS );
+}
+
+
+/***********************************************************************
+ *           CreateSemaphoreExW   (kernelbase.@)
+ */
+HANDLE WINAPI DECLSPEC_HOTPATCH CreateSemaphoreExW( SECURITY_ATTRIBUTES *sa, LONG initial, LONG max,
+                                                    LPCWSTR name, DWORD flags, DWORD access )
+{
+    HANDLE ret = 0;
+    UNICODE_STRING nameW;
+    OBJECT_ATTRIBUTES attr;
+    NTSTATUS status;
+
+    get_create_object_attributes( &attr, &nameW, sa, name );
+
+    status = NtCreateSemaphore( &ret, access, &attr, initial, max );
+    if (status == STATUS_OBJECT_NAME_EXISTS)
+        SetLastError( ERROR_ALREADY_EXISTS );
+    else
+        SetLastError( RtlNtStatusToDosError(status) );
+    return ret;
+}
+
+
+/***********************************************************************
+ *           OpenSemaphoreW   (kernelbase.@)
+ */
+HANDLE WINAPI DECLSPEC_HOTPATCH OpenSemaphoreW( DWORD access, BOOL inherit, LPCWSTR name )
+{
+    HANDLE ret;
+    UNICODE_STRING nameW;
+    OBJECT_ATTRIBUTES attr;
+    NTSTATUS status;
+
+    if (!is_version_nt()) access = SEMAPHORE_ALL_ACCESS;
+
+    if (!get_open_object_attributes( &attr, &nameW, inherit, name )) return 0;
+
+    status = NtOpenSemaphore( &ret, access, &attr );
+    if (status != STATUS_SUCCESS)
+    {
+        SetLastError( RtlNtStatusToDosError(status) );
+        return 0;
+    }
+    return ret;
+}
+
+
+/***********************************************************************
+ *           ReleaseSemaphore   (kernelbase.@)
+ */
+BOOL WINAPI DECLSPEC_HOTPATCH ReleaseSemaphore( HANDLE handle, LONG count, LONG *previous )
+{
+    return set_ntstatus( NtReleaseSemaphore( handle, count, (PULONG)previous ));
+}




More information about the wine-cvs mailing list