diff --git a/xtoskrnl/includes/ke/pushlock.hh b/xtoskrnl/includes/ke/pushlock.hh index a4aae28..0c23f49 100644 --- a/xtoskrnl/includes/ke/pushlock.hh +++ b/xtoskrnl/includes/ke/pushlock.hh @@ -22,6 +22,7 @@ namespace KE STATIC XTFASTCALL VOID AcquireSharedPushLock(PKPUSH_LOCK PushLock); STATIC XTFASTCALL VOID AcquireWaitExclusivePushLock(IN PKPUSH_LOCK PushLock); STATIC XTFASTCALL VOID AcquireWaitSharedPushLock(IN OUT PKPUSH_LOCK PushLock); + STATIC XTFASTCALL VOID InitializePushLock(IN PKPUSH_LOCK PushLock); STATIC XTFASTCALL VOID ReleaseExclusivePushLock(IN PKPUSH_LOCK PushLock); STATIC XTFASTCALL VOID ReleasePushLock(IN PKPUSH_LOCK PushLock); STATIC XTFASTCALL VOID ReleaseSharedPushLock(IN PKPUSH_LOCK PushLock); @@ -35,7 +36,7 @@ namespace KE private: STATIC XTINLINE VOID OptimizePushLockList(IN PKPUSH_LOCK PushLock, IN KPUSH_LOCK OldValue); - STATIC XTINLINE XTFASTCALL VOID SpinPushLock(IN PKPUSH_LOCK_WAIT_BLOCK WaitBlock); + STATIC XTINLINE VOID SpinPushLock(IN PKPUSH_LOCK_WAIT_BLOCK WaitBlock); }; } diff --git a/xtoskrnl/ke/pushlock.cc b/xtoskrnl/ke/pushlock.cc index ea73a30..e6fe1d5 100644 --- a/xtoskrnl/ke/pushlock.cc +++ b/xtoskrnl/ke/pushlock.cc @@ -299,6 +299,25 @@ KE::PushLock::AcquireWaitSharedPushLock(IN PKPUSH_LOCK PushLock) } } +/** + * Initializes a push lock. + * + * @param PushLock + * Supplies a pointer to the push lock to be initialized. + * + * @return This routine does not return any value. + * + * @since XT 1.0 + * + */ +XTFASTCALL +VOID +KE::PushLock::InitializePushLock(IN PKPUSH_LOCK PushLock) +{ + /* Initialize the push lock state */ + PushLock->Value = 0; +} + /** * Optimizes the push lock wait list by converting it from a singly-linked LIFO list into a doubly-linked FIFO list. * @@ -715,7 +734,6 @@ KE::PushLock::ReleaseWaitSharedPushLock(IN PKPUSH_LOCK PushLock) * @since XT 1.0 */ XTINLINE -XTFASTCALL VOID KE::PushLock::SpinPushLock(IN PKPUSH_LOCK_WAIT_BLOCK WaitBlock) {