mirror of
https://github.com/reactos/reactos.git
synced 2026-05-30 05:51:26 +08:00
[NTOS:CM] Implement the shared lock macro for use
CmpAcquireKcbLockSharedByKey can come in handy for use to lock KCBs by their convkey with a shared lock, specifically we would need this for cache lookup stuff.
This commit is contained in:
@@ -89,6 +89,14 @@
|
||||
(GET_HASH_ENTRY(CmpCacheTable, \
|
||||
(k)->ConvKey)->Owner == KeGetCurrentThread())
|
||||
|
||||
//
|
||||
// Shared acquires a KCB by index
|
||||
//
|
||||
#define CmpAcquireKcbLockSharedByIndex(i) \
|
||||
{ \
|
||||
ExAcquirePushLockShared(&CmpCacheTable[(i)].Lock); \
|
||||
}
|
||||
|
||||
//
|
||||
// Exclusively acquires a KCB by index
|
||||
//
|
||||
@@ -120,6 +128,16 @@ CmpAcquireKcbLockExclusiveByKey(IN ULONG ConvKey)
|
||||
CmpAcquireKcbLockExclusiveByIndex(GET_HASH_INDEX(ConvKey));
|
||||
}
|
||||
|
||||
//
|
||||
// Shared acquires a KCB by key
|
||||
//
|
||||
FORCEINLINE
|
||||
VOID
|
||||
CmpAcquireKcbLockSharedByKey(
|
||||
_In_ ULONG ConvKey)
|
||||
{
|
||||
CmpAcquireKcbLockSharedByIndex(GET_HASH_INDEX(ConvKey));
|
||||
}
|
||||
|
||||
//
|
||||
// Shared acquires a KCB
|
||||
@@ -130,14 +148,6 @@ CmpAcquireKcbLockExclusiveByKey(IN ULONG ConvKey)
|
||||
(k)->ConvKey)->Lock); \
|
||||
}
|
||||
|
||||
//
|
||||
// Shared acquires a KCB by index
|
||||
//
|
||||
#define CmpAcquireKcbLockSharedByIndex(i) \
|
||||
{ \
|
||||
ExAcquirePushLockShared(&CmpCacheTable[(i)].Lock); \
|
||||
}
|
||||
|
||||
//
|
||||
// Tries to convert a KCB lock
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user