From 4b26d03dba1d314510dad921fff3b50bb6a4cae5 Mon Sep 17 00:00:00 2001 From: nmzik Date: Fri, 7 Aug 2026 17:51:59 +0200 Subject: [PATCH] fix pthread init abi --- src/kernel/pthread.cpp | 17 ++++++++++------- src/kernel/pthread.h | 8 +++++--- src/libs/libC.cpp | 8 ++++---- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src/kernel/pthread.cpp b/src/kernel/pthread.cpp index 7f0c69132..814be83ae 100644 --- a/src/kernel/pthread.cpp +++ b/src/kernel/pthread.cpp @@ -1849,8 +1849,9 @@ static int PthreadMutexInitNamed(PthreadMutex* mutex, const PthreadMutexattr* at } } -int KYTY_SYSV_ABI PthreadMutexInit(PthreadMutex* mutex, const PthreadMutexattr* attr) { - return PthreadMutexInitNamed(mutex, attr, ""); +int KYTY_SYSV_ABI PthreadMutexInit(PthreadMutex* mutex, const PthreadMutexattr* attr, + const char* name) { + return PthreadMutexInitNamed(mutex, attr, name); } int KYTY_SYSV_ABI PthreadMutexDestroy(PthreadMutex* mutex) { @@ -2443,8 +2444,9 @@ static int PthreadRwlockInitNamed(PthreadRwlock* rwlock, const PthreadRwlockattr return OK; } -int KYTY_SYSV_ABI PthreadRwlockInit(PthreadRwlock* rwlock, const PthreadRwlockattr* attr) { - return PthreadRwlockInitNamed(rwlock, attr, ""); +int KYTY_SYSV_ABI PthreadRwlockInit(PthreadRwlock* rwlock, const PthreadRwlockattr* attr, + const char* name) { + return PthreadRwlockInitNamed(rwlock, attr, name); } static PthreadRwlockPrivate::Reader* RwlockFindReader(PthreadRwlock rwlock, Pthread thread) { @@ -2938,8 +2940,9 @@ static int PthreadCondInitNamed(PthreadCond* cond, const PthreadCondattr* attr, } } -int KYTY_SYSV_ABI PthreadCondInit(PthreadCond* cond, const PthreadCondattr* attr) { - return PthreadCondInitNamed(cond, attr, ""); +int KYTY_SYSV_ABI PthreadCondInit(PthreadCond* cond, const PthreadCondattr* attr, + const char* name) { + return PthreadCondInitNamed(cond, attr, name); } int KYTY_SYSV_ABI PthreadCondSignal(PthreadCond* cond) { @@ -4560,7 +4563,7 @@ int KYTY_SYSV_ABI pthread_mutex_init(LibKernel::PthreadMutex* mutex, const LibKernel::PthreadMutexattr* attr) { PRINT_NAME(); - return POSIX_PTHREAD_CALL(LibKernel::PthreadMutexInit(mutex, attr)); + return POSIX_PTHREAD_CALL(LibKernel::PthreadMutexInit(mutex, attr, nullptr)); } int KYTY_SYSV_ABI pthread_mutexattr_init(LibKernel::PthreadMutexattr* attr) { diff --git a/src/kernel/pthread.h b/src/kernel/pthread.h index d9364d570..057ef3247 100644 --- a/src/kernel/pthread.h +++ b/src/kernel/pthread.h @@ -77,7 +77,8 @@ int KYTY_SYSV_ABI PthreadMutexattrInit(PthreadMutexattr* attr); int KYTY_SYSV_ABI PthreadMutexattrDestroy(PthreadMutexattr* attr); int KYTY_SYSV_ABI PthreadMutexattrSettype(PthreadMutexattr* attr, int type); int KYTY_SYSV_ABI PthreadMutexattrSetprotocol(PthreadMutexattr* attr, int protocol); -int KYTY_SYSV_ABI PthreadMutexInit(PthreadMutex* mutex, const PthreadMutexattr* attr); +int KYTY_SYSV_ABI PthreadMutexInit(PthreadMutex* mutex, const PthreadMutexattr* attr, + const char* name); int KYTY_SYSV_ABI PthreadMutexDestroy(PthreadMutex* mutex); int KYTY_SYSV_ABI PthreadMutexLock(PthreadMutex* mutex); int KYTY_SYSV_ABI PthreadMutexTrylock(PthreadMutex* mutex); @@ -159,7 +160,8 @@ int KYTY_SYSV_ABI PthreadAttrSetstackaddr(PthreadAttr* attr, void* addr); int KYTY_SYSV_ABI PthreadAttrSetstacksize(PthreadAttr* attr, size_t stack_size); int KYTY_SYSV_ABI PthreadRwlockDestroy(PthreadRwlock* rwlock); -int KYTY_SYSV_ABI PthreadRwlockInit(PthreadRwlock* rwlock, const PthreadRwlockattr* attr); +int KYTY_SYSV_ABI PthreadRwlockInit(PthreadRwlock* rwlock, const PthreadRwlockattr* attr, + const char* name); int KYTY_SYSV_ABI PthreadRwlockRdlock(PthreadRwlock* rwlock); int KYTY_SYSV_ABI PthreadRwlockTimedrdlock(PthreadRwlock* rwlock, KernelUseconds usec); int KYTY_SYSV_ABI PthreadRwlockTimedwrlock(PthreadRwlock* rwlock, KernelUseconds usec); @@ -177,7 +179,7 @@ int KYTY_SYSV_ABI PthreadCondattrInit(PthreadCondattr* attr); int KYTY_SYSV_ABI PthreadCondattrSetclock(PthreadCondattr* attr, KernelClockid clock_id); int KYTY_SYSV_ABI PthreadCondBroadcast(PthreadCond* cond); int KYTY_SYSV_ABI PthreadCondDestroy(PthreadCond* cond); -int KYTY_SYSV_ABI PthreadCondInit(PthreadCond* cond, const PthreadCondattr* attr); +int KYTY_SYSV_ABI PthreadCondInit(PthreadCond* cond, const PthreadCondattr* attr, const char* name); int KYTY_SYSV_ABI PthreadCondSignal(PthreadCond* cond); int KYTY_SYSV_ABI PthreadCondSignalto(PthreadCond* cond, Pthread thread); int KYTY_SYSV_ABI PthreadCondTimedwait(PthreadCond* cond, PthreadMutex* mutex, KernelUseconds usec); diff --git a/src/libs/libC.cpp b/src/libs/libC.cpp index 0f8749d4f..43f62dd3e 100644 --- a/src/libs/libC.cpp +++ b/src/libs/libC.cpp @@ -481,13 +481,13 @@ static KYTY_SYSV_ABI int MtxInit(LibKernel::PthreadMutex* mtx, int type) { constexpr int mtx_recursive = 0x100; if ((type & mtx_recursive) == 0) { - return mtx_result(LibKernel::PthreadMutexInit(mtx, nullptr)); + return mtx_result(LibKernel::PthreadMutexInit(mtx, nullptr, nullptr)); } LibKernel::PthreadMutexattr attr = nullptr; int result = LibKernel::PthreadMutexattrInit(&attr); result = (result == OK ? LibKernel::PthreadMutexattrSettype(&attr, 2) : result); - result = (result == OK ? LibKernel::PthreadMutexInit(mtx, &attr) : result); + result = (result == OK ? LibKernel::PthreadMutexInit(mtx, &attr, nullptr) : result); (void)LibKernel::PthreadMutexattrDestroy(&attr); return mtx_result(result); @@ -659,8 +659,8 @@ void KYTY_SYSV_ABI LibcHeapGetTraceInfo(Info* info) { info->mstate_table = g_mstate_table; } -int KYTY_SYSV_ABI LibcInternalExtCxaThreadAtexit(thread_atexit_destructor_t destructor, void* object, - void* /*module_id*/) { +int KYTY_SYSV_ABI LibcInternalExtCxaThreadAtexit(thread_atexit_destructor_t destructor, + void* object, void* /*module_id*/) { PRINT_NAME(); g_thread_atexit_destructors.push_back({destructor, object});