16 #include <nn/pia/pia_Definitions.h>
17 #include <nn/pia/common/common_RootObject.h>
22 #if CAFE_OS_SDK_VERSION >= 21002
23 #define NN_PIA_ENABLE_FAST_MUTEX 1
25 #define NN_PIA_ENABLE_FAST_MUTEX 0
28 #elif NN_PIA_A || NN_PIA_B
32 #define PIA_CRITICAL_SECTION_LOCK_CHECKER_ENABLE NN_PIA_UNDER_DEVELOP
46 class CriticalSection :
public common::RootObject
53 explicit CriticalSection(
int lockOrder = -1);
86 void Trace(uint64_t flag)
const;
92 #if PIA_CRITICAL_SECTION_LOCK_CHECKER_ENABLE
93 int GetLockOrder()
const
101 #if NN_PIA_NINTENDOSDK
102 nn::os::MutexType m_MutexInner;
104 nn::os::CriticalSection m_CriticalSection;
106 CRITICAL_SECTION m_CriticalSection;
108 #if NN_PIA_ENABLE_FAST_MUTEX
109 OSFastMutex m_FastMutex;
113 #elif NN_PIA_A || NN_PIA_B
114 void initialize_pthread(pthread_mutex_t* p_pthread);
115 pthread_mutex_t mMutexInner;
117 #error "invalid platform"
120 #if PIA_CRITICAL_SECTION_LOCK_CHECKER_ENABLE