Module: wine Branch: master Commit: e1a4fbe7307cb1ac842a00894b8a3438df012544 URL: https://source.winehq.org/git/wine.git/?a=commit;h=e1a4fbe7307cb1ac842a00894...
Author: Alexandre Julliard julliard@winehq.org Date: Fri Jul 23 16:51:33 2021 +0200
wow64: Add thunks for the semaphore syscalls.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/wow64/sync.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++ dlls/wow64/syscall.h | 4 +++ 2 files changed, 74 insertions(+)
diff --git a/dlls/wow64/sync.c b/dlls/wow64/sync.c index 2ca7764c3cd..bd7e20ca02c 100644 --- a/dlls/wow64/sync.c +++ b/dlls/wow64/sync.c @@ -83,6 +83,28 @@ NTSTATUS WINAPI wow64_NtCreateMutant( UINT *args ) }
+/********************************************************************** + * wow64_NtCreateSemaphore + */ +NTSTATUS WINAPI wow64_NtCreateSemaphore( UINT *args ) +{ + ULONG *handle_ptr = get_ptr( &args ); + ACCESS_MASK access = get_ulong( &args ); + OBJECT_ATTRIBUTES32 *attr32 = get_ptr( &args ); + LONG initial = get_ulong( &args ); + LONG max = get_ulong( &args ); + + struct object_attr64 attr; + HANDLE handle = 0; + NTSTATUS status; + + *handle_ptr = 0; + status = NtCreateSemaphore( &handle, access, objattr_32to64( &attr, attr32 ), initial, max ); + put_handle( handle_ptr, handle ); + return status; +} + + /********************************************************************** * wow64_NtOpenEvent */ @@ -123,6 +145,26 @@ NTSTATUS WINAPI wow64_NtOpenMutant( UINT *args ) }
+/********************************************************************** + * wow64_NtOpenSemaphore + */ +NTSTATUS WINAPI wow64_NtOpenSemaphore( UINT *args ) +{ + ULONG *handle_ptr = get_ptr( &args ); + ACCESS_MASK access = get_ulong( &args ); + OBJECT_ATTRIBUTES32 *attr32 = get_ptr( &args ); + + struct object_attr64 attr; + HANDLE handle = 0; + NTSTATUS status; + + *handle_ptr = 0; + status = NtOpenSemaphore( &handle, access, objattr_32to64( &attr, attr32 )); + put_handle( handle_ptr, handle ); + return status; +} + + /********************************************************************** * wow64_NtPulseEvent */ @@ -165,6 +207,21 @@ NTSTATUS WINAPI wow64_NtQueryMutant( UINT *args ) }
+/********************************************************************** + * wow64_NtQuerySemaphore + */ +NTSTATUS WINAPI wow64_NtQuerySemaphore( UINT *args ) +{ + HANDLE handle = get_handle( &args ); + SEMAPHORE_INFORMATION_CLASS class = get_ulong( &args ); + void *info = get_ptr( &args ); + ULONG len = get_ulong( &args ); + ULONG *retlen = get_ptr( &args ); + + return NtQuerySemaphore( handle, class, info, len, retlen ); +} + + /********************************************************************** * wow64_NtReleaseMutant */ @@ -177,6 +234,19 @@ NTSTATUS WINAPI wow64_NtReleaseMutant( UINT *args ) }
+/********************************************************************** + * wow64_NtReleaseSemaphore + */ +NTSTATUS WINAPI wow64_NtReleaseSemaphore( UINT *args ) +{ + HANDLE handle = get_handle( &args ); + ULONG count = get_ulong( &args ); + ULONG *previous = get_ptr( &args ); + + return NtReleaseSemaphore( handle, count, previous ); +} + + /********************************************************************** * wow64_NtResetEvent */ diff --git a/dlls/wow64/syscall.h b/dlls/wow64/syscall.h index 8481db2a587..bb9f220332c 100644 --- a/dlls/wow64/syscall.h +++ b/dlls/wow64/syscall.h @@ -29,11 +29,13 @@ SYSCALL_ENTRY( NtClose ) \ SYSCALL_ENTRY( NtCreateEvent ) \ SYSCALL_ENTRY( NtCreateMutant ) \ + SYSCALL_ENTRY( NtCreateSemaphore ) \ SYSCALL_ENTRY( NtDeleteAtom ) \ SYSCALL_ENTRY( NtFindAtom ) \ SYSCALL_ENTRY( NtGetCurrentProcessorNumber ) \ SYSCALL_ENTRY( NtOpenEvent ) \ SYSCALL_ENTRY( NtOpenMutant ) \ + SYSCALL_ENTRY( NtOpenSemaphore ) \ SYSCALL_ENTRY( NtPulseEvent ) \ SYSCALL_ENTRY( NtQueryDefaultLocale ) \ SYSCALL_ENTRY( NtQueryDefaultUILanguage ) \ @@ -41,7 +43,9 @@ SYSCALL_ENTRY( NtQueryInformationAtom ) \ SYSCALL_ENTRY( NtQueryInstallUILanguage ) \ SYSCALL_ENTRY( NtQueryMutant ) \ + SYSCALL_ENTRY( NtQuerySemaphore ) \ SYSCALL_ENTRY( NtReleaseMutant ) \ + SYSCALL_ENTRY( NtReleaseSemaphore ) \ SYSCALL_ENTRY( NtResetEvent ) \ SYSCALL_ENTRY( NtSetDefaultLocale ) \ SYSCALL_ENTRY( NtSetDefaultUILanguage ) \