mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 17:16:04 +00:00
[NTOSKRNL] Use interlocked operations for VACB reference counting.
CORE-14480 CORE-14285
This commit is contained in:
parent
dea9c291ab
commit
14b05e65ff
3 changed files with 60 additions and 23 deletions
|
@ -220,7 +220,7 @@ typedef struct _ROS_VACB
|
|||
/* Mutex */
|
||||
KMUTEX Mutex;
|
||||
/* Number of references. */
|
||||
ULONG ReferenceCount;
|
||||
volatile ULONG ReferenceCount;
|
||||
/* How many times was it pinned? */
|
||||
_Guarded_by_(Mutex)
|
||||
LONG PinCount;
|
||||
|
@ -523,20 +523,28 @@ IsPointInRange(
|
|||
#if DBG
|
||||
#define CcRosVacbIncRefCount(vacb) CcRosVacbIncRefCount_(vacb,__FILE__,__LINE__)
|
||||
#define CcRosVacbDecRefCount(vacb) CcRosVacbDecRefCount_(vacb,__FILE__,__LINE__)
|
||||
#define CcRosVacbGetRefCount(vacb) CcRosVacbGetRefCount_(vacb,__FILE__,__LINE__)
|
||||
|
||||
VOID
|
||||
ULONG
|
||||
CcRosVacbIncRefCount_(
|
||||
PROS_VACB vacb,
|
||||
PCSTR file,
|
||||
INT line);
|
||||
|
||||
VOID
|
||||
ULONG
|
||||
CcRosVacbDecRefCount_(
|
||||
PROS_VACB vacb,
|
||||
PCSTR file,
|
||||
INT line);
|
||||
|
||||
ULONG
|
||||
CcRosVacbGetRefCount_(
|
||||
PROS_VACB vacb,
|
||||
PCSTR file,
|
||||
INT line);
|
||||
|
||||
#else
|
||||
#define CcRosVacbIncRefCount(vacb) (++((vacb)->ReferenceCount))
|
||||
#define CcRosVacbDecRefCount(vacb) (--((vacb)->ReferenceCount))
|
||||
#define CcRosVacbIncRefCount(vacb) InterlockedIncrement((PLONG)&(vacb)->ReferenceCount)
|
||||
#define CcRosVacbDecRefCount(vacb) InterlockedDecrement((PLONG)&(vacb)->ReferenceCount)
|
||||
#define CcRosVacbGetRefCount(vacb) InterlockedCompareExchange((PLONG)&(vacb)->ReferenceCount, 0, 0)
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue