add push lock initialization code
All checks were successful
Builds / ExectOS (amd64, release) (push) Successful in 27s
Builds / ExectOS (i686, release) (push) Successful in 29s
Builds / ExectOS (i686, debug) (push) Successful in 43s
Builds / ExectOS (amd64, debug) (push) Successful in 45s

This commit is contained in:
2026-06-30 23:33:25 +02:00
parent d8f4f6bfd0
commit c58305022f
2 changed files with 21 additions and 2 deletions

View File

@@ -22,6 +22,7 @@ namespace KE
STATIC XTFASTCALL VOID AcquireSharedPushLock(PKPUSH_LOCK PushLock); STATIC XTFASTCALL VOID AcquireSharedPushLock(PKPUSH_LOCK PushLock);
STATIC XTFASTCALL VOID AcquireWaitExclusivePushLock(IN PKPUSH_LOCK PushLock); STATIC XTFASTCALL VOID AcquireWaitExclusivePushLock(IN PKPUSH_LOCK PushLock);
STATIC XTFASTCALL VOID AcquireWaitSharedPushLock(IN OUT 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 ReleaseExclusivePushLock(IN PKPUSH_LOCK PushLock);
STATIC XTFASTCALL VOID ReleasePushLock(IN PKPUSH_LOCK PushLock); STATIC XTFASTCALL VOID ReleasePushLock(IN PKPUSH_LOCK PushLock);
STATIC XTFASTCALL VOID ReleaseSharedPushLock(IN PKPUSH_LOCK PushLock); STATIC XTFASTCALL VOID ReleaseSharedPushLock(IN PKPUSH_LOCK PushLock);
@@ -35,7 +36,7 @@ namespace KE
private: private:
STATIC XTINLINE VOID OptimizePushLockList(IN PKPUSH_LOCK PushLock, IN KPUSH_LOCK OldValue); 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);
}; };
} }

View File

@@ -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. * 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 * @since XT 1.0
*/ */
XTINLINE XTINLINE
XTFASTCALL
VOID VOID
KE::PushLock::SpinPushLock(IN PKPUSH_LOCK_WAIT_BLOCK WaitBlock) KE::PushLock::SpinPushLock(IN PKPUSH_LOCK_WAIT_BLOCK WaitBlock)
{ {