mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 08:25:03 +00:00
[NTOS:EX] Use InterlockedExchangeAdd64 instead of InterlockedCompareExchange64 loop in ExAllocateLocallyUniqueId
This commit is contained in:
parent
21c9f2a488
commit
fffe4f6385
1 changed files with 2 additions and 20 deletions
|
@ -339,27 +339,9 @@ VOID
|
|||
NTAPI
|
||||
ExAllocateLocallyUniqueId(OUT LUID *LocallyUniqueId)
|
||||
{
|
||||
LARGE_INTEGER PrevLuid;
|
||||
LONGLONG NewLuid, CompLuid;
|
||||
|
||||
/* Atomically increment the luid */
|
||||
PrevLuid.QuadPart = ExpLuid.QuadPart;
|
||||
for (NewLuid = ExpLuid.QuadPart + ExpLuidIncrement; ;
|
||||
NewLuid = PrevLuid.QuadPart + ExpLuidIncrement)
|
||||
{
|
||||
CompLuid = InterlockedCompareExchange64(&ExpLuid.QuadPart,
|
||||
NewLuid,
|
||||
PrevLuid.QuadPart);
|
||||
if (CompLuid == PrevLuid.QuadPart)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
PrevLuid.QuadPart = CompLuid;
|
||||
}
|
||||
|
||||
LocallyUniqueId->LowPart = PrevLuid.LowPart;
|
||||
LocallyUniqueId->HighPart = PrevLuid.HighPart;
|
||||
*(LONG64*)LocallyUniqueId = InterlockedExchangeAdd64(&ExpLuid.QuadPart,
|
||||
ExpLuidIncrement);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue