mirror of
https://github.com/reactos/reactos.git
synced 2025-01-03 21:09:19 +00:00
[NTOSKRNL/CONFIG]
- Add more assert macros for registry operations: locked or loading, exclusively locked or loading, hash and KCB locks, locked for flushing. - Add macros for getting alloc page from KCB and delay alloc item. svn path=/trunk/; revision=46617
This commit is contained in:
parent
0e774b5a9b
commit
0254cbbcf9
1 changed files with 57 additions and 0 deletions
|
@ -91,6 +91,14 @@ CmpIsKeyValueBig(IN PHHIVE Hive,
|
|||
ASSERT((CmpSpecialBootCondition == TRUE) || \
|
||||
(CmpTestRegistryLock() == TRUE))
|
||||
|
||||
//
|
||||
// Makes sure that the registry is locked or loading
|
||||
//
|
||||
#define CMP_ASSERT_REGISTRY_LOCK_OR_LOADING(h) \
|
||||
ASSERT((CmpSpecialBootCondition == TRUE) || \
|
||||
(((PCMHIVE)h)->HiveIsLoading == TRUE) || \
|
||||
(CmpTestRegistryLock() == TRUE))
|
||||
|
||||
//
|
||||
// Makes sure that the registry is exclusively locked
|
||||
//
|
||||
|
@ -98,6 +106,14 @@ CmpIsKeyValueBig(IN PHHIVE Hive,
|
|||
ASSERT((CmpSpecialBootCondition == TRUE) || \
|
||||
(CmpTestRegistryLockExclusive() == TRUE))
|
||||
|
||||
//
|
||||
// Makes sure that the registry is exclusively locked or loading
|
||||
//
|
||||
#define CMP_ASSERT_EXCLUSIVE_REGISTRY_LOCK_OR_LOADING(h) \
|
||||
ASSERT((CmpSpecialBootCondition == TRUE) || \
|
||||
(((PCMHIVE)h)->HiveIsLoading == TRUE) || \
|
||||
(CmpTestRegistryLockExclusive() == TRUE))
|
||||
|
||||
//
|
||||
// Makes sure this is a valid KCB
|
||||
//
|
||||
|
@ -255,6 +271,47 @@ CmpConvertKcbSharedToExclusive(IN PCM_KEY_CONTROL_BLOCK k)
|
|||
(k)).Lock); \
|
||||
}
|
||||
|
||||
//
|
||||
// Asserts that either the registry or the hash entry is locked
|
||||
//
|
||||
#define CMP_ASSERT_HASH_ENTRY_LOCK(k) \
|
||||
{ \
|
||||
ASSERT(((GET_HASH_ENTRY(CmpCacheTable, k).Owner == \
|
||||
KeGetCurrentThread())) || \
|
||||
(CmpTestRegistryLockExclusive() == TRUE)); \
|
||||
}
|
||||
|
||||
//
|
||||
// Asserts that either the registry or the KCB is locked
|
||||
//
|
||||
#define CMP_ASSERT_KCB_LOCK(k) \
|
||||
{ \
|
||||
ASSERT((CmpIsKcbLockedExclusive(k) == TRUE) || \
|
||||
(CmpTestRegistryLockExclusive() == TRUE)); \
|
||||
}
|
||||
|
||||
//
|
||||
// Gets the page attached to the KCB
|
||||
//
|
||||
#define CmpGetAllocPageFromKcb(k) \
|
||||
(PCM_ALLOC_PAGE)(((ULONG_PTR)(k)) & ~(PAGE_SIZE - 1))
|
||||
|
||||
//
|
||||
// Gets the page attached to the delayed allocation
|
||||
//
|
||||
#define CmpGetAllocPageFromDelayAlloc(a) \
|
||||
(PCM_ALLOC_PAGE)(((ULONG_PTR)(a)) & ~(PAGE_SIZE - 1))
|
||||
|
||||
//
|
||||
// Makes sure that the registry is locked for flushes
|
||||
//
|
||||
#define CMP_ASSERT_FLUSH_LOCK(h) \
|
||||
ASSERT((CmpSpecialBootCondition == TRUE) || \
|
||||
(((PCMHIVE)h)->HiveIsLoading == TRUE) || \
|
||||
(CmpTestHiveFlusherLockShared((PCMHIVE)h) == TRUE) || \
|
||||
(CmpTestHiveFlusherLockExclusive((PCMHIVE)h) == TRUE) || \
|
||||
(CmpTestRegistryLockExclusive() == TRUE));
|
||||
|
||||
//
|
||||
// Asserts that either the registry or the KCB is locked
|
||||
//
|
||||
|
|
Loading…
Reference in a new issue