#include <linux/futex.h>
#include <stdint.h>
#include <sys/syscall.h> // For syscall numbers.
-#include <threads.h>
namespace __llvm_libc {
return MutexError::NONE;
}
- static MutexError init(mtx_t *m, bool istimed, bool isrecur, bool isrobust) {
- auto *mutex = reinterpret_cast<Mutex *>(m);
- return init(mutex, istimed, isrecur, isrobust);
- }
-
- static MutexError destroy(mtx_t *) { return MutexError::NONE; }
+ static MutexError destroy(Mutex *) { return MutexError::NONE; }
MutexError reset();
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;
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<Mutex *>(m), type & mtx_timed,
+ type & mtx_recursive, 0);
return err == MutexError::NONE ? thrd_success : thrd_error;
}