summaryrefslogtreecommitdiffstats
path: root/MdePkg/Library/BaseSynchronizationLib/SynchronizationMsc.c
diff options
context:
space:
mode:
Diffstat (limited to 'MdePkg/Library/BaseSynchronizationLib/SynchronizationMsc.c')
-rw-r--r--MdePkg/Library/BaseSynchronizationLib/SynchronizationMsc.c99
1 files changed, 53 insertions, 46 deletions
diff --git a/MdePkg/Library/BaseSynchronizationLib/SynchronizationMsc.c b/MdePkg/Library/BaseSynchronizationLib/SynchronizationMsc.c
index 12b01ff899..f99895a39c 100644
--- a/MdePkg/Library/BaseSynchronizationLib/SynchronizationMsc.c
+++ b/MdePkg/Library/BaseSynchronizationLib/SynchronizationMsc.c
@@ -12,12 +12,15 @@
Microsoft Visual Studio 7.1 Function Prototypes for read write barrier Intrinsics.
**/
-void _ReadWriteBarrier (void);
-#pragma intrinsic(_ReadWriteBarrier)
+void
+_ReadWriteBarrier (
+ void
+ );
+#pragma intrinsic(_ReadWriteBarrier)
-#define SPIN_LOCK_RELEASED ((UINTN) 1)
-#define SPIN_LOCK_ACQUIRED ((UINTN) 2)
+#define SPIN_LOCK_RELEASED ((UINTN) 1)
+#define SPIN_LOCK_ACQUIRED ((UINTN) 2)
/**
Retrieves the architecture specific spin lock alignment requirements for
@@ -63,14 +66,14 @@ GetSpinLockProperties (
SPIN_LOCK *
EFIAPI
InitializeSpinLock (
- OUT SPIN_LOCK *SpinLock
+ OUT SPIN_LOCK *SpinLock
)
{
ASSERT (SpinLock != NULL);
- _ReadWriteBarrier();
+ _ReadWriteBarrier ();
*SpinLock = SPIN_LOCK_RELEASED;
- _ReadWriteBarrier();
+ _ReadWriteBarrier ();
return SpinLock;
}
@@ -98,7 +101,7 @@ InitializeSpinLock (
SPIN_LOCK *
EFIAPI
AcquireSpinLock (
- IN OUT SPIN_LOCK *SpinLock
+ IN OUT SPIN_LOCK *SpinLock
)
{
UINT64 Current;
@@ -118,7 +121,7 @@ AcquireSpinLock (
//
// Get the current timer value
//
- Current = GetPerformanceCounter();
+ Current = GetPerformanceCounter ();
//
// Initialize local variables
@@ -142,23 +145,27 @@ AcquireSpinLock (
if (Cycle < 0) {
Cycle = -Cycle;
}
+
Cycle++;
while (!AcquireSpinLockOrFail (SpinLock)) {
CpuPause ();
Previous = Current;
- Current = GetPerformanceCounter();
- Delta = (INT64) (Current - Previous);
+ Current = GetPerformanceCounter ();
+ Delta = (INT64)(Current - Previous);
if (Start > End) {
Delta = -Delta;
}
+
if (Delta < 0) {
Delta += Cycle;
}
+
Total += Delta;
ASSERT (Total < Timeout);
}
}
+
return SpinLock;
}
@@ -182,11 +189,11 @@ AcquireSpinLock (
BOOLEAN
EFIAPI
AcquireSpinLockOrFail (
- IN OUT SPIN_LOCK *SpinLock
+ IN OUT SPIN_LOCK *SpinLock
)
{
- SPIN_LOCK LockValue;
- VOID *Result;
+ SPIN_LOCK LockValue;
+ VOID *Result;
ASSERT (SpinLock != NULL);
@@ -195,13 +202,13 @@ AcquireSpinLockOrFail (
_ReadWriteBarrier ();
Result = InterlockedCompareExchangePointer (
- (VOID**)SpinLock,
- (VOID*)SPIN_LOCK_RELEASED,
- (VOID*)SPIN_LOCK_ACQUIRED
- );
+ (VOID **)SpinLock,
+ (VOID *)SPIN_LOCK_RELEASED,
+ (VOID *)SPIN_LOCK_ACQUIRED
+ );
_ReadWriteBarrier ();
- return (BOOLEAN) (Result == (VOID*) SPIN_LOCK_RELEASED);
+ return (BOOLEAN)(Result == (VOID *)SPIN_LOCK_RELEASED);
}
/**
@@ -221,10 +228,10 @@ AcquireSpinLockOrFail (
SPIN_LOCK *
EFIAPI
ReleaseSpinLock (
- IN OUT SPIN_LOCK *SpinLock
+ IN OUT SPIN_LOCK *SpinLock
)
{
- SPIN_LOCK LockValue;
+ SPIN_LOCK LockValue;
ASSERT (SpinLock != NULL);
@@ -255,7 +262,7 @@ ReleaseSpinLock (
UINT32
EFIAPI
InterlockedIncrement (
- IN volatile UINT32 *Value
+ IN volatile UINT32 *Value
)
{
ASSERT (Value != NULL);
@@ -279,7 +286,7 @@ InterlockedIncrement (
UINT32
EFIAPI
InterlockedDecrement (
- IN volatile UINT32 *Value
+ IN volatile UINT32 *Value
)
{
ASSERT (Value != NULL);
@@ -308,9 +315,9 @@ InterlockedDecrement (
UINT16
EFIAPI
InterlockedCompareExchange16 (
- IN OUT volatile UINT16 *Value,
- IN UINT16 CompareValue,
- IN UINT16 ExchangeValue
+ IN OUT volatile UINT16 *Value,
+ IN UINT16 CompareValue,
+ IN UINT16 ExchangeValue
)
{
ASSERT (Value != NULL);
@@ -339,9 +346,9 @@ InterlockedCompareExchange16 (
UINT32
EFIAPI
InterlockedCompareExchange32 (
- IN OUT volatile UINT32 *Value,
- IN UINT32 CompareValue,
- IN UINT32 ExchangeValue
+ IN OUT volatile UINT32 *Value,
+ IN UINT32 CompareValue,
+ IN UINT32 ExchangeValue
)
{
ASSERT (Value != NULL);
@@ -369,9 +376,9 @@ InterlockedCompareExchange32 (
UINT64
EFIAPI
InterlockedCompareExchange64 (
- IN OUT volatile UINT64 *Value,
- IN UINT64 CompareValue,
- IN UINT64 ExchangeValue
+ IN OUT volatile UINT64 *Value,
+ IN UINT64 CompareValue,
+ IN UINT64 ExchangeValue
)
{
ASSERT (Value != NULL);
@@ -399,28 +406,28 @@ InterlockedCompareExchange64 (
VOID *
EFIAPI
InterlockedCompareExchangePointer (
- IN OUT VOID * volatile *Value,
- IN VOID *CompareValue,
- IN VOID *ExchangeValue
+ IN OUT VOID *volatile *Value,
+ IN VOID *CompareValue,
+ IN VOID *ExchangeValue
)
{
UINT8 SizeOfValue;
- SizeOfValue = (UINT8) sizeof (*Value);
+ SizeOfValue = (UINT8)sizeof (*Value);
switch (SizeOfValue) {
case sizeof (UINT32):
- return (VOID*)(UINTN)InterlockedCompareExchange32 (
- (volatile UINT32*)Value,
- (UINT32)(UINTN)CompareValue,
- (UINT32)(UINTN)ExchangeValue
- );
+ return (VOID *)(UINTN)InterlockedCompareExchange32 (
+ (volatile UINT32 *)Value,
+ (UINT32)(UINTN)CompareValue,
+ (UINT32)(UINTN)ExchangeValue
+ );
case sizeof (UINT64):
- return (VOID*)(UINTN)InterlockedCompareExchange64 (
- (volatile UINT64*)Value,
- (UINT64)(UINTN)CompareValue,
- (UINT64)(UINTN)ExchangeValue
- );
+ return (VOID *)(UINTN)InterlockedCompareExchange64 (
+ (volatile UINT64 *)Value,
+ (UINT64)(UINTN)CompareValue,
+ (UINT64)(UINTN)ExchangeValue
+ );
default:
ASSERT (FALSE);
return NULL;