1#include "thread/seadMutex.h"
2
3namespace sead
4{
5Mutex::Mutex() : IDisposer()
6{
7 nn::os::InitializeMutex(&mMutexInner, true, 0);
8}
9
10Mutex::Mutex(Heap* disposer_heap) : Mutex(disposer_heap, HeapNullOption::UseSpecifiedOrContainHeap)
11{
12}
13
14Mutex::Mutex(Heap* disposer_heap, HeapNullOption heap_null_option)
15 : IDisposer(disposer_heap, heap_null_option)
16{
17 nn::os::InitializeMutex(&mMutexInner, true, 0);
18}
19
20Mutex::~Mutex()
21{
22 nn::os::FinalizeMutex(&mMutexInner);
23}
24
25void Mutex::lock()
26{
27 nn::os::LockMutex(&mMutexInner);
28}
29
30bool Mutex::tryLock()
31{
32 return nn::os::TryLockMutex(&mMutexInner);
33}
34
35void Mutex::unlock()
36{
37 nn::os::UnlockMutex(&mMutexInner);
38}
39} // namespace sead
40