mirror of
https://github.com/Atmosphere-NX/Atmosphere.git
synced 2025-05-17 08:34:23 -04:00
os: implement SdkRecursiveMutex
This commit is contained in:
parent
c949779b3d
commit
b25218c918
7 changed files with 226 additions and 22 deletions
|
@ -18,25 +18,36 @@
|
|||
namespace ams::os {
|
||||
|
||||
void InitializeSdkMutex(SdkMutexType *mutex) {
|
||||
/* Initialize the critical section. */
|
||||
GetReference(mutex->_storage).Initialize();
|
||||
}
|
||||
|
||||
bool IsSdkMutexLockedByCurrentThread(const SdkMutexType *mutex) {
|
||||
/* Check whether the critical section is held. */
|
||||
return GetReference(mutex->_storage).IsLockedByCurrentThread();
|
||||
}
|
||||
|
||||
void LockSdkMutex(SdkMutexType *mutex) {
|
||||
/* Check pre-conditions. */
|
||||
AMS_ABORT_UNLESS(!IsSdkMutexLockedByCurrentThread(mutex));
|
||||
|
||||
/* Enter the critical section. */
|
||||
return GetReference(mutex->_storage).Enter();
|
||||
}
|
||||
|
||||
bool TryLockSdkMutex(SdkMutexType *mutex) {
|
||||
/* Check pre-conditions. */
|
||||
AMS_ABORT_UNLESS(!IsSdkMutexLockedByCurrentThread(mutex));
|
||||
|
||||
/* Try to enter the critical section. */
|
||||
return GetReference(mutex->_storage).TryEnter();
|
||||
}
|
||||
|
||||
void UnlockSdkMutex(SdkMutexType *mutex) {
|
||||
/* Check pre-conditions. */
|
||||
AMS_ABORT_UNLESS(IsSdkMutexLockedByCurrentThread(mutex));
|
||||
|
||||
/* Leave the critical section. */
|
||||
return GetReference(mutex->_storage).Leave();
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue