1#ifndef X86_MATANEL_SYNCHRONIZATION_H
2#define X86_MATANEL_SYNCHRONIZATION_H
117#define PL_FLAGS_EXCLUSIVE 0x1
118#define PL_FLAGS_SHARED 0x2
121#define PL_LOCK_BIT 0x1
122#define PL_WAIT_BIT 0x2
123#define PL_WAKE_BIT 0x4
124#define PL_FLAG_MASK 0xF
125#define PL_SHARE_INC 0x10
246 Entry->
Blink = Blink;
247 Blink->
Flink = Entry;
263 Entry->
Flink = First;
266 First->
Blink = Entry;
286 Flink = Entry->
Flink;
304 Flink = Entry->
Flink;
305 Blink = Entry->
Blink;
308 Blink->
Flink = Flink;
309 Flink->
Blink = Blink;
312 Entry->
Flink = Entry;
313 Entry->
Blink = Entry;
330 oldHead = __atomic_load_n(ListHeadPtr, __ATOMIC_RELAXED);
331 Entry->
Next = oldHead;
333 }
while (!__atomic_compare_exchange_n(
356 oldHead = __atomic_load_n(ListHeadPtr, __ATOMIC_ACQUIRE);
359 next = oldHead->
Next;
361 }
while (!__atomic_compare_exchange_n(
struct _DOUBLY_LINKED_LIST * PDOUBLY_LINKED_LIST
struct _SINGLE_LINKED_LIST * PSINGLE_LINKED_LIST
void MsAcquirePushLockExclusive(IN PUSH_LOCK *Lock)
struct _PUSH_LOCK PUSH_LOCK
void MsAcquireSpinlock(IN PSPINLOCK lock, IN PIRQL OldIrql)
struct _RUNDOWN_REF * PRUNDOWN_REF
MTSTATUS MsWaitForEvent(IN PEVENT event)
void MsAcquirePushLockShared(IN PUSH_LOCK *Lock)
FORCEINLINE PDOUBLY_LINKED_LIST RemoveHeadList(PDOUBLY_LINKED_LIST Head)
struct _RUNDOWN_REF RUNDOWN_REF
FORCEINLINE void InitializeListHead(PDOUBLY_LINKED_LIST Head)
struct _PUSH_LOCK_WAIT_BLOCK PUSH_LOCK_WAIT_BLOCK
MTSTATUS MsReleaseMutexObject(IN PMUTEX mut)
bool MsAcquireRundownProtection(IN PRUNDOWN_REF rundown)
FORCEINLINE PSINGLE_LINKED_LIST InterlockedPopEntry(PSINGLE_LINKED_LIST *ListHeadPtr)
FORCEINLINE void InterlockedPushEntry(PSINGLE_LINKED_LIST *ListHeadPtr, PSINGLE_LINKED_LIST Entry)
void MsReleaseRundownProtection(IN PRUNDOWN_REF rundown)
MTSTATUS MsInitializeMutexObject(IN PMUTEX mut)
enum _EVENT_TYPE EVENT_TYPE
void MsReleasePushLockExclusive(IN PUSH_LOCK *Lock)
MTSTATUS MsSetEvent(IN PEVENT event)
void MsWaitForRundownProtectionRelease(IN PRUNDOWN_REF rundown)
FORCEINLINE void InsertTailList(PDOUBLY_LINKED_LIST Head, PDOUBLY_LINKED_LIST Entry)
MTSTATUS MsAcquireMutexObject(IN PMUTEX mut)
void MsReleaseSpinlockFromDpcLevel(IN PSPINLOCK Lock)
void MsReleaseSpinlock(IN PSPINLOCK lock, IN IRQL OldIrql)
struct _SPINLOCK * PSPINLOCK
void MsAcquireSpinlockAtDpcLevel(IN PSPINLOCK Lock)
FORCEINLINE void InsertHeadList(PDOUBLY_LINKED_LIST Head, PDOUBLY_LINKED_LIST Entry)
void MsReleasePushLockShared(IN PUSH_LOCK *Lock)
struct _PUSH_LOCK_WAIT_BLOCK * PPUSH_LOCK_WAIT_BLOCK
struct _SPINLOCK SPINLOCK
FORCEINLINE void RemoveEntryList(PDOUBLY_LINKED_LIST Entry)
struct _DOUBLY_LINKED_LIST * Blink
struct _DOUBLY_LINKED_LIST * Flink
struct _Queue waitingQueue
struct _ETHREAD * ownerThread
struct _PUSH_LOCK_WAIT_BLOCK * Last
struct _PUSH_LOCK_WAIT_BLOCK * Next
struct _SINGLE_LINKED_LIST * Next