diff --git a/libc/src/__support/threads/linux/mutex.h b/libc/src/__support/threads/linux/mutex.h index 00af4a297137..e4e06e99b5eb 100644 --- a/libc/src/__support/threads/linux/mutex.h +++ b/libc/src/__support/threads/linux/mutex.h @@ -16,7 +16,6 @@ #include #include #include // For syscall numbers. -#include namespace __llvm_libc { @@ -55,12 +54,7 @@ public: return MutexError::NONE; } - static MutexError init(mtx_t *m, bool istimed, bool isrecur, bool isrobust) { - auto *mutex = reinterpret_cast(m); - return init(mutex, istimed, isrecur, isrobust); - } - - static MutexError destroy(mtx_t *) { return MutexError::NONE; } + static MutexError destroy(Mutex *) { return MutexError::NONE; } MutexError reset(); diff --git a/libc/src/__support/threads/mutex.h b/libc/src/__support/threads/mutex.h index e717038712aa..f585dcd1c32f 100644 --- a/libc/src/__support/threads/mutex.h +++ b/libc/src/__support/threads/mutex.h @@ -53,10 +53,6 @@ enum class MutexError : int { namespace __llvm_libc { -static_assert(sizeof(Mutex) <= sizeof(mtx_t), - "The public mtx_t type cannot accommodate the internal mutex " - "type."); - // An RAII class for easy locking and unlocking of mutexes. class MutexLock { Mutex *mutex; diff --git a/libc/src/threads/mtx_init.cpp b/libc/src/threads/mtx_init.cpp index f3d1ee66f1fe..1e4da794f636 100644 --- a/libc/src/threads/mtx_init.cpp +++ b/libc/src/threads/mtx_init.cpp @@ -13,8 +13,13 @@ namespace __llvm_libc { +static_assert(sizeof(Mutex) <= sizeof(mtx_t), + "The public mtx_t type cannot accommodate the internal mutex " + "type."); + LLVM_LIBC_FUNCTION(int, mtx_init, (mtx_t * m, int type)) { - auto err = Mutex::init(m, type & mtx_timed, type & mtx_recursive, 0); + auto err = Mutex::init(reinterpret_cast(m), type & mtx_timed, + type & mtx_recursive, 0); return err == MutexError::NONE ? thrd_success : thrd_error; }