Module: wine Branch: master Commit: c1b468ba48abd1219038c073341a414550605a3d URL: https://gitlab.winehq.org/wine/wine/-/commit/c1b468ba48abd1219038c073341a414...
Author: Alexandre Julliard julliard@winehq.org Date: Thu Jul 11 14:28:32 2024 +0200
ntdll: Call the terminate thread callback on ARM64EC.
---
dlls/ntdll/signal_arm64ec.c | 10 +++++++++- dlls/xtajit64/cpu.c | 9 +++++++++ dlls/xtajit64/xtajit64.spec | 2 +- 3 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/dlls/ntdll/signal_arm64ec.c b/dlls/ntdll/signal_arm64ec.c index b5ecb643bdb..49d66b517dd 100644 --- a/dlls/ntdll/signal_arm64ec.c +++ b/dlls/ntdll/signal_arm64ec.c @@ -52,6 +52,7 @@ static void (WINAPI *pNotifyMemoryProtect)(void*,SIZE_T,ULONG,BOOL,NTSTATUS) static void (WINAPI *pNotifyUnmapViewOfSection)(void*,BOOL,NTSTATUS); static NTSTATUS (WINAPI *pProcessInit)(void); static NTSTATUS (WINAPI *pThreadInit)(void); +static void (WINAPI *pThreadTerm)(HANDLE,LONG); static void (WINAPI *pUpdateProcessorInformation)(SYSTEM_CPU_INFORMATION*);
static BOOLEAN emulated_processor_features[PROCESSOR_FEATURE_MAX]; @@ -163,6 +164,7 @@ NTSTATUS arm64ec_process_init( HMODULE module ) GET_PTR( NotifyUnmapViewOfSection ); GET_PTR( ProcessInit ); GET_PTR( ThreadInit ); + GET_PTR( ThreadTerm ); GET_PTR( UpdateProcessorInformation ); #undef GET_PTR
@@ -431,7 +433,7 @@ DEFINE_SYSCALL(NtSuspendThread, (HANDLE handle, ULONG *count)) DEFINE_SYSCALL(NtSystemDebugControl, (SYSDBG_COMMAND command, void *in_buff, ULONG in_len, void *out_buff, ULONG out_len, ULONG *retlen)) DEFINE_SYSCALL(NtTerminateJobObject, (HANDLE handle, NTSTATUS status)) DEFINE_SYSCALL(NtTerminateProcess, (HANDLE handle, LONG exit_code)) -DEFINE_SYSCALL(NtTerminateThread, (HANDLE handle, LONG exit_code)) +DEFINE_WRAPPED_SYSCALL(NtTerminateThread, (HANDLE handle, LONG exit_code)) DEFINE_SYSCALL(NtTestAlert, (void)) DEFINE_SYSCALL(NtTraceControl, (ULONG code, void *inbuf, ULONG inbuf_len, void *outbuf, ULONG outbuf_len, ULONG *size)) DEFINE_SYSCALL(NtUnloadDriver, (const UNICODE_STRING *name)) @@ -638,6 +640,12 @@ NTSTATUS SYSCALL_API NtSetContextThread( HANDLE handle, const CONTEXT *context ) return syscall_NtSetContextThread( handle, &arm_ctx ); }
+NTSTATUS SYSCALL_API NtTerminateThread( HANDLE handle, LONG exit_code ) +{ + if (pThreadTerm) pThreadTerm( handle, exit_code ); + return syscall_NtTerminateThread( handle, exit_code ); +} + NTSTATUS SYSCALL_API NtUnmapViewOfSection( HANDLE process, void *addr ) { BOOL is_current = RtlIsCurrentProcess( process ); diff --git a/dlls/xtajit64/cpu.c b/dlls/xtajit64/cpu.c index 82d741dde82..91446aa1676 100644 --- a/dlls/xtajit64/cpu.c +++ b/dlls/xtajit64/cpu.c @@ -202,6 +202,15 @@ NTSTATUS WINAPI ThreadInit(void) }
+/********************************************************************** + * ThreadTerm (xtajit64.@) + */ +void WINAPI ThreadTerm( HANDLE handle, LONG exit_code ) +{ + TRACE( "%p %lx\n", handle, exit_code ); +} + + /********************************************************************** * UpdateProcessorInformation (xtajit64.@) */ diff --git a/dlls/xtajit64/xtajit64.spec b/dlls/xtajit64/xtajit64.spec index 83d8e56dd2d..bfc6c41c4b0 100644 --- a/dlls/xtajit64/xtajit64.spec +++ b/dlls/xtajit64/xtajit64.spec @@ -16,5 +16,5 @@ #@ stub ProcessTerm #@ stub ResetToConsistentState @ stdcall ThreadInit() -#@ stub ThreadTerm +@ stdcall ThreadTerm(ptr long) @ stdcall UpdateProcessorInformation(ptr)