add push lock initialization code
This commit is contained in:
@@ -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);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user