mirror of
https://github.com/reactos/reactos.git
synced 2024-10-15 05:37:44 +00:00
Implemented ExInterlocked functions.
svn path=/trunk/; revision=759
This commit is contained in:
parent
157d5b3fa2
commit
eae6fb6efc
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: interlck.c,v 1.2 1999/08/29 06:59:06 ea Exp $
|
/* $Id: interlck.c,v 1.3 1999/11/09 18:00:14 ekohl Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -13,7 +13,6 @@
|
||||||
|
|
||||||
#include <ddk/ntddk.h>
|
#include <ddk/ntddk.h>
|
||||||
|
|
||||||
#include <internal/debug.h>
|
|
||||||
|
|
||||||
/* FUNCTIONS *****************************************************************/
|
/* FUNCTIONS *****************************************************************/
|
||||||
|
|
||||||
|
@ -23,7 +22,17 @@ ExInterlockedDecrementLong (
|
||||||
PKSPIN_LOCK Lock
|
PKSPIN_LOCK Lock
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
KIRQL oldlvl;
|
||||||
|
LONG oldval;
|
||||||
|
|
||||||
|
KeAcquireSpinLock (Lock, &oldlvl);
|
||||||
|
|
||||||
|
oldval = *Addend;
|
||||||
|
(*Addend)--;
|
||||||
|
|
||||||
|
KeReleaseSpinLock (Lock, oldlvl);
|
||||||
|
|
||||||
|
return oldval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -34,7 +43,17 @@ ExInterlockedExchangeUlong (
|
||||||
PKSPIN_LOCK Lock
|
PKSPIN_LOCK Lock
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
KIRQL oldlvl;
|
||||||
|
LONG oldval;
|
||||||
|
|
||||||
|
KeAcquireSpinLock (Lock, &oldlvl);
|
||||||
|
|
||||||
|
oldval = *Target;
|
||||||
|
*Target = Value;
|
||||||
|
|
||||||
|
KeReleaseSpinLock (Lock, oldlvl);
|
||||||
|
|
||||||
|
return oldval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -45,9 +64,40 @@ ExInterlockedAddUlong (
|
||||||
PKSPIN_LOCK Lock
|
PKSPIN_LOCK Lock
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
KIRQL oldlvl;
|
||||||
|
ULONG oldval;
|
||||||
|
|
||||||
|
KeAcquireSpinLock (Lock, &oldlvl);
|
||||||
|
|
||||||
|
oldval = *Addend;
|
||||||
|
*Addend += Increment;
|
||||||
|
|
||||||
|
KeReleaseSpinLock (Lock, oldlvl);
|
||||||
|
|
||||||
|
return oldval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LARGE_INTEGER
|
||||||
|
ExInterlockedAddLargeInteger (
|
||||||
|
PLARGE_INTEGER Addend,
|
||||||
|
LARGE_INTEGER Increment,
|
||||||
|
PKSPIN_LOCK Lock
|
||||||
|
)
|
||||||
|
{
|
||||||
|
KIRQL oldlvl;
|
||||||
|
LARGE_INTEGER oldval;
|
||||||
|
|
||||||
|
|
||||||
|
KeAcquireSpinLock (Lock, &oldlvl);
|
||||||
|
|
||||||
|
|
||||||
|
oldval.QuadPart = Addend->QuadPart;
|
||||||
|
Addend->QuadPart += Increment.QuadPart;
|
||||||
|
|
||||||
|
KeReleaseSpinLock (Lock, oldlvl);
|
||||||
|
|
||||||
|
return oldval;
|
||||||
|
}
|
||||||
|
|
||||||
INTERLOCKED_RESULT
|
INTERLOCKED_RESULT
|
||||||
ExInterlockedIncrementLong (
|
ExInterlockedIncrementLong (
|
||||||
|
@ -55,8 +105,17 @@ ExInterlockedIncrementLong (
|
||||||
PKSPIN_LOCK Lock
|
PKSPIN_LOCK Lock
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
KIRQL oldlvl;
|
||||||
|
LONG oldval;
|
||||||
|
|
||||||
|
KeAcquireSpinLock (Lock, &oldlvl);
|
||||||
|
|
||||||
|
oldval = *Addend;
|
||||||
|
(*Addend)++;
|
||||||
|
|
||||||
|
KeReleaseSpinLock (Lock, oldlvl);
|
||||||
|
|
||||||
|
return oldval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
Loading…
Reference in a new issue