28ba2d4600
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
54 lines
1.1 KiB
C
54 lines
1.1 KiB
C
/* SPDX-License-Identifier: GPL-2.0
|
|
*
|
|
* Copyright (C) 2018-2019 WireGuard LLC. All Rights Reserved.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <wdm.h>
|
|
|
|
static __forceinline VOID
|
|
InterlockedSet(_Inout_ _Interlocked_operand_ LONG volatile *Target, _In_ LONG Value)
|
|
{
|
|
*Target = Value;
|
|
}
|
|
|
|
static __forceinline VOID
|
|
InterlockedSetU(_Inout_ _Interlocked_operand_ ULONG volatile *Target, _In_ ULONG Value)
|
|
{
|
|
*Target = Value;
|
|
}
|
|
|
|
static __forceinline VOID
|
|
InterlockedSetPointer(_Inout_ _Interlocked_operand_ VOID *volatile *Target, _In_opt_ VOID *Value)
|
|
{
|
|
*Target = Value;
|
|
}
|
|
|
|
static __forceinline LONG
|
|
InterlockedGet(_In_ _Interlocked_operand_ LONG volatile *Value)
|
|
{
|
|
return *Value;
|
|
}
|
|
|
|
static __forceinline ULONG
|
|
InterlockedGetU(_In_ _Interlocked_operand_ ULONG volatile *Value)
|
|
{
|
|
return *Value;
|
|
}
|
|
|
|
static __forceinline PVOID
|
|
InterlockedGetPointer(_In_ _Interlocked_operand_ PVOID volatile *Value)
|
|
{
|
|
return *Value;
|
|
}
|
|
|
|
static __forceinline LONG64
|
|
InterlockedGet64(_In_ _Interlocked_operand_ LONG64 volatile *Value)
|
|
{
|
|
#ifdef _WIN64
|
|
return *Value;
|
|
#else
|
|
return InterlockedCompareExchange64(Value, 0, 0);
|
|
#endif
|
|
} |