From 03674bba858814b0ac8f7454740b784090d06341 Mon Sep 17 00:00:00 2001 From: fincs Date: Wed, 8 Nov 2017 20:37:50 +0100 Subject: [PATCH] Implement lock_init{_recursive} newlib syscalls --- nx/include/switch/kernel/mutex.h | 12 ++++++++++++ nx/source/system/newlib.c | 2 ++ 2 files changed, 14 insertions(+) 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; }