33 Spinlock(
bool bLocked,
bool bAvoidTracking =
false);
42 bool acquire(
bool recurse =
false,
bool safe =
true);
45 void exit(uintptr_t ra = 0);
52 bool interrupts()
const;
54 static const bool allow_recursion =
true;
58 bool acquireContended(
bool recurse,
bool safe, uintptr_t ra)
NEVER_INLINE;
67 volatile processor_register_t* deferredReleaseWord();
68 void unlockForScheduler();
71 void trackRelease(uintptr_t ra)
const;
73 uintptr_t acquisitionAddress()
const;
78 NOT_COPYABLE_OR_ASSIGNABLE(
Spinlock);
81 bool m_bInterrupts =
false;
83#if SPINLOCK_DIAGNOSTICS
84 uint64_t m_Sentinel = 0;
85 uint32_t m_Magic = 0xdeadbaba;
86 uint32_t m_MagicAlign = 0;
90 void* m_pOwner =
nullptr;
92 size_t m_OwnedProcessor = ~0;
94 bool m_bAvoidTracking =
false;