From 4220a747cbbe73f1e0f271a77721fe6e4a1ec2f3 Mon Sep 17 00:00:00 2001 From: nmzik Date: Mon, 17 Aug 2026 16:30:16 +0200 Subject: [PATCH] libc: remove duplicate Mtx ABI implementations No idea why these were reimplemented in the first place at all. The loaded guest libc already provides them; Kyty only needs the lower libkernel pthread imports. --- src/libs/libC.cpp | 101 ---------------------------------------------- 1 file changed, 101 deletions(-) diff --git a/src/libs/libC.cpp b/src/libs/libC.cpp index 895842a17..509c3d261 100644 --- a/src/libs/libC.cpp +++ b/src/libs/libC.cpp @@ -458,98 +458,6 @@ static KYTY_SYSV_ABI void catchReturnFromMain(int status) { ::printf("return from main = %d\n", status); } -enum class ThrdResult : int { - Success = 0, - NoMem = 1, - TimedOut = 2, - Busy = 3, - Error = 4, - Perm = 5, -}; - -static int mtx_result(int result) { - return (result == OK ? static_cast(ThrdResult::Success) - : static_cast(ThrdResult::Error)); -} - -static KYTY_SYSV_ABI int MtxInit(LibKernel::PthreadMutex* mtx, int type) { - PRINT_NAME(); - - if (mtx == nullptr) { - return static_cast(ThrdResult::Error); - } - - constexpr int mtx_recursive = 0x100; - if ((type & mtx_recursive) == 0) { - 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, nullptr) : result); - (void)LibKernel::PthreadMutexattrDestroy(&attr); - - return mtx_result(result); -} - -static KYTY_SYSV_ABI int MtxInitWithName(LibKernel::PthreadMutex* mtx, int type, - const char* /*name*/) { - PRINT_NAME(); - - return MtxInit(mtx, type); -} - -static KYTY_SYSV_ABI int MtxInitWithDefaultNameOverride(LibKernel::PthreadMutex* mtx, int type, - const char* /*name*/) { - PRINT_NAME(); - - return MtxInit(mtx, type); -} - -static KYTY_SYSV_ABI void MtxDestroy(LibKernel::PthreadMutex* mtx) { - PRINT_NAME(); - - if (mtx != nullptr) { - (void)LibKernel::PthreadMutexDestroy(mtx); - } -} - -static KYTY_SYSV_ABI int MtxLock(LibKernel::PthreadMutex* mtx) { - PRINT_NAME(); - - return mtx_result(LibKernel::PthreadMutexLock(mtx)); -} - -static KYTY_SYSV_ABI int MtxTrylock(LibKernel::PthreadMutex* mtx) { - PRINT_NAME(); - - const auto result = LibKernel::PthreadMutexTrylock(mtx); - if (result == OK) { - return static_cast(ThrdResult::Success); - } - return static_cast(ThrdResult::Busy); -} - -static KYTY_SYSV_ABI int MtxTimedlock(LibKernel::PthreadMutex* mtx, const void* /*xtime*/) { - PRINT_NAME(); - - return mtx_result(LibKernel::PthreadMutexLock(mtx)); -} - -static KYTY_SYSV_ABI int MtxUnlock(LibKernel::PthreadMutex* mtx) { - PRINT_NAME(); - - (void)LibKernel::PthreadMutexUnlock(mtx); - return static_cast(ThrdResult::Success); -} - -static KYTY_SYSV_ABI int MtxCurrentOwns(LibKernel::PthreadMutex* /*mtx*/) { - PRINT_NAME(); - - return 0; -} - using execute_once_func_t = KYTY_SYSV_ABI int (*)(void*, void*, void**); static std::mutex g_execute_once_mutex; @@ -907,15 +815,6 @@ LIB_DEFINE(InitLibC_1) { LIB_FUNC("tsvEmnenz48", LibC::cxa_atexit); LIB_FUNC("H2e8t5ScQGc", LibC::cxa_finalize); LIB_FUNC("DiGVep5yB5w", LibC::std_execute_once); - LIB_FUNC("YaHc3GS7y7g", LibC::MtxInit); - LIB_FUNC("tgioGpKtmbE", LibC::MtxInitWithName); - LIB_FUNC("JHp7ogc1+HY", LibC::MtxInitWithDefaultNameOverride); - LIB_FUNC("5Lf51jvohTQ", LibC::MtxDestroy); - LIB_FUNC("iS4aWbUonl0", LibC::MtxLock); - LIB_FUNC("k6pGNMwJB08", LibC::MtxTrylock); - LIB_FUNC("hPzYSd5Nasc", LibC::MtxTimedlock); - LIB_FUNC("gTuXQwP9rrs", LibC::MtxUnlock); - LIB_FUNC("VYQwFs4CC4Y", LibC::MtxCurrentOwns); } } // namespace Libs