diff --git a/nx/include/switch/kernel/mutex.h b/nx/include/switch/kernel/mutex.h index dbc79b7d..e79b9264 100644 --- a/nx/include/switch/kernel/mutex.h +++ b/nx/include/switch/kernel/mutex.h @@ -5,8 +5,20 @@ typedef _LOCK_T Mutex; typedef _LOCK_RECURSIVE_T RMutex; +static inline void mutexInit(Mutex* m) +{ + *m = 0; +} + void mutexLock(Mutex* m); void mutexUnlock(Mutex* m); +static inline void rmutexInit(RMutex* m) +{ + m->lock = 0; + m->thread_tag = 0; + m->counter = 0; +} + void rmutexLock(RMutex* m); void rmutexUnlock(RMutex* m); diff --git a/nx/source/system/newlib.c b/nx/source/system/newlib.c index cc9cd572..876d842b 100644 --- a/nx/source/system/newlib.c +++ b/nx/source/system/newlib.c @@ -11,8 +11,10 @@ void newlibSetup() { __syscalls.exit = __libnx_exit; // Register locking syscalls + __syscalls.lock_init = mutexInit; __syscalls.lock_acquire = mutexLock; __syscalls.lock_release = mutexUnlock; + __syscalls.lock_init_recursive = rmutexInit; __syscalls.lock_acquire_recursive = rmutexLock; __syscalls.lock_release_recursive = rmutexUnlock; }