KeReleaseQueuedSpinLock(LockQueuePfnLock, OldIrql);
}
+FORCEINLINE
+VOID
+MiAcquirePfnLockAtDpcLevel(VOID)
+{
+ PKSPIN_LOCK_QUEUE LockQueue;
+
+ ASSERT(KeGetCurrentIrql() >= DISPATCH_LEVEL);
+ LockQueue = &KeGetCurrentPrcb()->LockQueue[LockQueuePfnLock];
+ KeAcquireQueuedSpinLockAtDpcLevel(LockQueue);
+}
+
+FORCEINLINE
+VOID
+MiReleasePfnLockFromDpcLevel(VOID)
+{
+ PKSPIN_LOCK_QUEUE LockQueue;
+
+ LockQueue = &KeGetCurrentPrcb()->LockQueue[LockQueuePfnLock];
+ KeReleaseQueuedSpinLockFromDpcLevel(LockQueue);
+ ASSERT(KeGetCurrentIrql() >= DISPATCH_LEVEL);
+}
+
#define MI_ASSERT_PFN_LOCK_HELD() ASSERT(KeGetCurrentIrql() == DISPATCH_LEVEL)
FORCEINLINE
PMMPFN Pfn1;
PVOID BaseVa, BaseVaStart;
PMMFREE_POOL_ENTRY FreeEntry;
- PKSPIN_LOCK_QUEUE LockQueue;
//
// Figure out how big the allocation is in pages
//
// Lock the PFN database too
//
- LockQueue = &KeGetCurrentPrcb()->LockQueue[LockQueuePfnLock];
- KeAcquireQueuedSpinLockAtDpcLevel(LockQueue);
+ MiAcquirePfnLockAtDpcLevel();
//
// Loop the pages
//
// Release the PFN and nonpaged pool lock
//
- KeReleaseQueuedSpinLockFromDpcLevel(LockQueue);
+ MiReleasePfnLockFromDpcLevel();
KeReleaseQueuedSpinLock(LockQueueMmNonPagedPoolLock, OldIrql);
//