Ark Server API (ASA) - Wiki
Loading...
Searching...
No Matches
FWindowsPlatformAtomics Struct Reference

#include <WindowsPlatformAtomics.h>

+ Inheritance diagram for FWindowsPlatformAtomics:
+ Collaboration diagram for FWindowsPlatformAtomics:

Static Public Member Functions

static FORCEINLINE int8 InterlockedIncrement (volatile int8 *Value)
 
static FORCEINLINE int16 InterlockedIncrement (volatile int16 *Value)
 
static FORCEINLINE int32 InterlockedIncrement (volatile int32 *Value)
 
static FORCEINLINE int64 InterlockedIncrement (volatile int64 *Value)
 
static FORCEINLINE int8 InterlockedDecrement (volatile int8 *Value)
 
static FORCEINLINE int16 InterlockedDecrement (volatile int16 *Value)
 
static FORCEINLINE int32 InterlockedDecrement (volatile int32 *Value)
 
static FORCEINLINE int64 InterlockedDecrement (volatile int64 *Value)
 
static FORCEINLINE int8 InterlockedAdd (volatile int8 *Value, int8 Amount)
 
static FORCEINLINE int16 InterlockedAdd (volatile int16 *Value, int16 Amount)
 
static FORCEINLINE int32 InterlockedAdd (volatile int32 *Value, int32 Amount)
 
static FORCEINLINE int64 InterlockedAdd (volatile int64 *Value, int64 Amount)
 
static FORCEINLINE int8 InterlockedExchange (volatile int8 *Value, int8 Exchange)
 
static FORCEINLINE int16 InterlockedExchange (volatile int16 *Value, int16 Exchange)
 
static FORCEINLINE int32 InterlockedExchange (volatile int32 *Value, int32 Exchange)
 
static FORCEINLINE int64 InterlockedExchange (volatile int64 *Value, int64 Exchange)
 
static FORCEINLINE voidInterlockedExchangePtr (void *volatile *Dest, void *Exchange)
 
static FORCEINLINE int8 InterlockedCompareExchange2 (volatile int8 *Dest, int8 Exchange, int8 Comparand)
 
static FORCEINLINE int16 InterlockedCompareExchange2 (volatile int16 *Dest, int16 Exchange, int16 Comparand)
 
static FORCEINLINE int32 InterlockedCompareExchange2 (volatile int32 *Dest, int32 Exchange, int32 Comparand)
 
static FORCEINLINE int64 InterlockedCompareExchange2 (volatile int64 *Dest, int64 Exchange, int64 Comparand)
 
static FORCEINLINE int8 InterlockedAnd (volatile int8 *Value, const int8 AndValue)
 
static FORCEINLINE int16 InterlockedAnd (volatile int16 *Value, const int16 AndValue)
 
static FORCEINLINE int32 InterlockedAnd (volatile int32 *Value, const int32 AndValue)
 
static FORCEINLINE int64 InterlockedAnd (volatile int64 *Value, const int64 AndValue)
 
static FORCEINLINE int8 InterlockedOr (volatile int8 *Value, const int8 OrValue)
 
static FORCEINLINE int16 InterlockedOr (volatile int16 *Value, const int16 OrValue)
 
static FORCEINLINE int32 InterlockedOr (volatile int32 *Value, const int32 OrValue)
 
static FORCEINLINE int64 InterlockedOr (volatile int64 *Value, const int64 OrValue)
 
static FORCEINLINE int8 InterlockedXor (volatile int8 *Value, const int8 XorValue)
 
static FORCEINLINE int16 InterlockedXor (volatile int16 *Value, const int16 XorValue)
 
static FORCEINLINE int32 InterlockedXor (volatile int32 *Value, const int32 XorValue)
 
static FORCEINLINE int64 InterlockedXor (volatile int64 *Value, const int64 XorValue)
 
static FORCEINLINE int8 AtomicRead (volatile const int8 *Src)
 
static FORCEINLINE int16 AtomicRead (volatile const int16 *Src)
 
static FORCEINLINE int32 AtomicRead (volatile const int32 *Src)
 
static FORCEINLINE int64 AtomicRead (volatile const int64 *Src)
 
static FORCEINLINE int8 AtomicRead_Relaxed (volatile const int8 *Src)
 
static FORCEINLINE int16 AtomicRead_Relaxed (volatile const int16 *Src)
 
static FORCEINLINE int32 AtomicRead_Relaxed (volatile const int32 *Src)
 
static FORCEINLINE int64 AtomicRead_Relaxed (volatile const int64 *Src)
 
static FORCEINLINE void AtomicStore (volatile int8 *Src, int8 Val)
 
static FORCEINLINE void AtomicStore (volatile int16 *Src, int16 Val)
 
static FORCEINLINE void AtomicStore (volatile int32 *Src, int32 Val)
 
static FORCEINLINE void AtomicStore (volatile int64 *Src, int64 Val)
 
static FORCEINLINE void AtomicStore_Relaxed (volatile int8 *Src, int8 Val)
 
static FORCEINLINE void AtomicStore_Relaxed (volatile int16 *Src, int16 Val)
 
static FORCEINLINE void AtomicStore_Relaxed (volatile int32 *Src, int32 Val)
 
static FORCEINLINE void AtomicStore_Relaxed (volatile int64 *Src, int64 Val)
 
static FORCEINLINE int64 AtomicRead64 (volatile const int64 *Src)
 
static FORCEINLINE voidInterlockedCompareExchangePointer (void *volatile *Dest, void *Exchange, void *Comparand)
 
static FORCEINLINE bool CanUseCompareExchange128 ()
 
- Static Public Member Functions inherited from FGenericPlatformAtomics
static FORCEINLINE bool CanUseCompareExchange128 ()
 

Static Protected Member Functions

static void HandleAtomicsFailure (const TCHAR *InFormat,...)
 
- Static Protected Member Functions inherited from FGenericPlatformAtomics
static bool IsAligned (const volatile void *Ptr, const uint32 Alignment=sizeof(void *))
 

Detailed Description

Windows implementation of the Atomics OS functions

Definition at line 12 of file WindowsPlatformAtomics.h.

Member Function Documentation

◆ AtomicRead() [1/4]

static FORCEINLINE int16 FWindowsPlatformAtomics::AtomicRead ( volatile const int16 * Src)
inlinestatic

Definition at line 288 of file WindowsPlatformAtomics.h.

+ Here is the call graph for this function:

◆ AtomicRead() [2/4]

static FORCEINLINE int32 FWindowsPlatformAtomics::AtomicRead ( volatile const int32 * Src)
inlinestatic

Definition at line 293 of file WindowsPlatformAtomics.h.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ AtomicRead() [3/4]

static FORCEINLINE int64 FWindowsPlatformAtomics::AtomicRead ( volatile const int64 * Src)
inlinestatic

Definition at line 298 of file WindowsPlatformAtomics.h.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ AtomicRead() [4/4]

static FORCEINLINE int8 FWindowsPlatformAtomics::AtomicRead ( volatile const int8 * Src)
inlinestatic

Definition at line 283 of file WindowsPlatformAtomics.h.

+ Here is the call graph for this function:

◆ AtomicRead64()

static FORCEINLINE int64 FWindowsPlatformAtomics::AtomicRead64 ( volatile const int64 * Src)
inlinestatic

Definition at line 372 of file WindowsPlatformAtomics.h.

+ Here is the call graph for this function:

◆ AtomicRead_Relaxed() [1/4]

static FORCEINLINE int16 FWindowsPlatformAtomics::AtomicRead_Relaxed ( volatile const int16 * Src)
inlinestatic

Definition at line 308 of file WindowsPlatformAtomics.h.

◆ AtomicRead_Relaxed() [2/4]

static FORCEINLINE int32 FWindowsPlatformAtomics::AtomicRead_Relaxed ( volatile const int32 * Src)
inlinestatic

Definition at line 313 of file WindowsPlatformAtomics.h.

◆ AtomicRead_Relaxed() [3/4]

static FORCEINLINE int64 FWindowsPlatformAtomics::AtomicRead_Relaxed ( volatile const int64 * Src)
inlinestatic

Definition at line 318 of file WindowsPlatformAtomics.h.

◆ AtomicRead_Relaxed() [4/4]

static FORCEINLINE int8 FWindowsPlatformAtomics::AtomicRead_Relaxed ( volatile const int8 * Src)
inlinestatic

Definition at line 303 of file WindowsPlatformAtomics.h.

◆ AtomicStore() [1/4]

static FORCEINLINE void FWindowsPlatformAtomics::AtomicStore ( volatile int16 * Src,
int16 Val )
inlinestatic

Definition at line 332 of file WindowsPlatformAtomics.h.

+ Here is the call graph for this function:

◆ AtomicStore() [2/4]

static FORCEINLINE void FWindowsPlatformAtomics::AtomicStore ( volatile int32 * Src,
int32 Val )
inlinestatic

Definition at line 337 of file WindowsPlatformAtomics.h.

+ Here is the call graph for this function:

◆ AtomicStore() [3/4]

static FORCEINLINE void FWindowsPlatformAtomics::AtomicStore ( volatile int64 * Src,
int64 Val )
inlinestatic

Definition at line 342 of file WindowsPlatformAtomics.h.

+ Here is the call graph for this function:

◆ AtomicStore() [4/4]

static FORCEINLINE void FWindowsPlatformAtomics::AtomicStore ( volatile int8 * Src,
int8 Val )
inlinestatic

Definition at line 327 of file WindowsPlatformAtomics.h.

+ Here is the call graph for this function:

◆ AtomicStore_Relaxed() [1/4]

static FORCEINLINE void FWindowsPlatformAtomics::AtomicStore_Relaxed ( volatile int16 * Src,
int16 Val )
inlinestatic

Definition at line 352 of file WindowsPlatformAtomics.h.

◆ AtomicStore_Relaxed() [2/4]

static FORCEINLINE void FWindowsPlatformAtomics::AtomicStore_Relaxed ( volatile int32 * Src,
int32 Val )
inlinestatic

Definition at line 357 of file WindowsPlatformAtomics.h.

◆ AtomicStore_Relaxed() [3/4]

static FORCEINLINE void FWindowsPlatformAtomics::AtomicStore_Relaxed ( volatile int64 * Src,
int64 Val )
inlinestatic

Definition at line 362 of file WindowsPlatformAtomics.h.

◆ AtomicStore_Relaxed() [4/4]

static FORCEINLINE void FWindowsPlatformAtomics::AtomicStore_Relaxed ( volatile int8 * Src,
int8 Val )
inlinestatic

Definition at line 347 of file WindowsPlatformAtomics.h.

◆ CanUseCompareExchange128()

static FORCEINLINE bool FWindowsPlatformAtomics::CanUseCompareExchange128 ( )
inlinestatic
Returns
true, if the processor we are running on can execute compare and exchange 128-bit operation.
See also
cmpxchg16b, early AMD64 processors don't support this operation.

Definition at line 433 of file WindowsPlatformAtomics.h.

+ Here is the call graph for this function:

◆ HandleAtomicsFailure()

static void FWindowsPlatformAtomics::HandleAtomicsFailure ( const TCHAR * InFormat,
... )
staticprotected

Handles atomics function failure.

Since 'check' has not yet been declared here we need to call external function to use it.

Parameters
InFormat- The string format string.

◆ InterlockedAdd() [1/4]

static FORCEINLINE int16 FWindowsPlatformAtomics::InterlockedAdd ( volatile int16 * Value,
int16 Amount )
inlinestatic

Definition at line 89 of file WindowsPlatformAtomics.h.

◆ InterlockedAdd() [2/4]

static FORCEINLINE int32 FWindowsPlatformAtomics::InterlockedAdd ( volatile int32 * Value,
int32 Amount )
inlinestatic

Definition at line 94 of file WindowsPlatformAtomics.h.

◆ InterlockedAdd() [3/4]

static FORCEINLINE int64 FWindowsPlatformAtomics::InterlockedAdd ( volatile int64 * Value,
int64 Amount )
inlinestatic

Definition at line 99 of file WindowsPlatformAtomics.h.

◆ InterlockedAdd() [4/4]

static FORCEINLINE int8 FWindowsPlatformAtomics::InterlockedAdd ( volatile int8 * Value,
int8 Amount )
inlinestatic

Definition at line 84 of file WindowsPlatformAtomics.h.

◆ InterlockedAnd() [1/4]

static FORCEINLINE int16 FWindowsPlatformAtomics::InterlockedAnd ( volatile int16 * Value,
const int16 AndValue )
inlinestatic

Definition at line 192 of file WindowsPlatformAtomics.h.

◆ InterlockedAnd() [2/4]

static FORCEINLINE int32 FWindowsPlatformAtomics::InterlockedAnd ( volatile int32 * Value,
const int32 AndValue )
inlinestatic

Definition at line 197 of file WindowsPlatformAtomics.h.

◆ InterlockedAnd() [3/4]

static FORCEINLINE int64 FWindowsPlatformAtomics::InterlockedAnd ( volatile int64 * Value,
const int64 AndValue )
inlinestatic

Definition at line 202 of file WindowsPlatformAtomics.h.

◆ InterlockedAnd() [4/4]

static FORCEINLINE int8 FWindowsPlatformAtomics::InterlockedAnd ( volatile int8 * Value,
const int8 AndValue )
inlinestatic

Definition at line 187 of file WindowsPlatformAtomics.h.

◆ InterlockedCompareExchange2() [1/4]

static FORCEINLINE int16 FWindowsPlatformAtomics::InterlockedCompareExchange2 ( volatile int16 * Dest,
int16 Exchange,
int16 Comparand )
inlinestatic

Definition at line 165 of file WindowsPlatformAtomics.h.

+ Here is the caller graph for this function:

◆ InterlockedCompareExchange2() [2/4]

static FORCEINLINE int32 FWindowsPlatformAtomics::InterlockedCompareExchange2 ( volatile int32 * Dest,
int32 Exchange,
int32 Comparand )
inlinestatic

Definition at line 170 of file WindowsPlatformAtomics.h.

+ Here is the caller graph for this function:

◆ InterlockedCompareExchange2() [3/4]

static FORCEINLINE int64 FWindowsPlatformAtomics::InterlockedCompareExchange2 ( volatile int64 * Dest,
int64 Exchange,
int64 Comparand )
inlinestatic

Definition at line 175 of file WindowsPlatformAtomics.h.

+ Here is the caller graph for this function:

◆ InterlockedCompareExchange2() [4/4]

static FORCEINLINE int8 FWindowsPlatformAtomics::InterlockedCompareExchange2 ( volatile int8 * Dest,
int8 Exchange,
int8 Comparand )
inlinestatic

Definition at line 160 of file WindowsPlatformAtomics.h.

+ Here is the caller graph for this function:

◆ InterlockedCompareExchangePointer()

static FORCEINLINE void * FWindowsPlatformAtomics::InterlockedCompareExchangePointer ( void *volatile * Dest,
void * Exchange,
void * Comparand )
inlinestatic

The function compares the Destination value with the Comparand value:

  • If the Destination value is equal to the Comparand value, the Exchange value is stored in the address specified by Destination,
  • Otherwise, the initial value of the Destination parameter is stored in the address specified specified by Comparand.
Returns
true if Comparand equals the original value of the Destination parameter, or false if Comparand does not equal the original value of the Destination parameter.

Early AMD64 processors lacked the CMPXCHG16B instruction. To determine whether the processor supports this operation, call the IsProcessorFeaturePresent function with PF_COMPARE64_EXCHANGE128.

Definition at line 417 of file WindowsPlatformAtomics.h.

◆ InterlockedDecrement() [1/4]

static FORCEINLINE int16 FWindowsPlatformAtomics::InterlockedDecrement ( volatile int16 * Value)
inlinestatic

Definition at line 57 of file WindowsPlatformAtomics.h.

◆ InterlockedDecrement() [2/4]

static FORCEINLINE int32 FWindowsPlatformAtomics::InterlockedDecrement ( volatile int32 * Value)
inlinestatic

Definition at line 62 of file WindowsPlatformAtomics.h.

◆ InterlockedDecrement() [3/4]

static FORCEINLINE int64 FWindowsPlatformAtomics::InterlockedDecrement ( volatile int64 * Value)
inlinestatic

Definition at line 67 of file WindowsPlatformAtomics.h.

◆ InterlockedDecrement() [4/4]

static FORCEINLINE int8 FWindowsPlatformAtomics::InterlockedDecrement ( volatile int8 * Value)
inlinestatic

Definition at line 52 of file WindowsPlatformAtomics.h.

◆ InterlockedExchange() [1/4]

static FORCEINLINE int16 FWindowsPlatformAtomics::InterlockedExchange ( volatile int16 * Value,
int16 Exchange )
inlinestatic

Definition at line 121 of file WindowsPlatformAtomics.h.

+ Here is the caller graph for this function:

◆ InterlockedExchange() [2/4]

static FORCEINLINE int32 FWindowsPlatformAtomics::InterlockedExchange ( volatile int32 * Value,
int32 Exchange )
inlinestatic

Definition at line 126 of file WindowsPlatformAtomics.h.

+ Here is the caller graph for this function:

◆ InterlockedExchange() [3/4]

static FORCEINLINE int64 FWindowsPlatformAtomics::InterlockedExchange ( volatile int64 * Value,
int64 Exchange )
inlinestatic

Definition at line 131 of file WindowsPlatformAtomics.h.

+ Here is the caller graph for this function:

◆ InterlockedExchange() [4/4]

static FORCEINLINE int8 FWindowsPlatformAtomics::InterlockedExchange ( volatile int8 * Value,
int8 Exchange )
inlinestatic

Definition at line 116 of file WindowsPlatformAtomics.h.

+ Here is the caller graph for this function:

◆ InterlockedExchangePtr()

static FORCEINLINE void * FWindowsPlatformAtomics::InterlockedExchangePtr ( void *volatile * Dest,
void * Exchange )
inlinestatic

Definition at line 148 of file WindowsPlatformAtomics.h.

◆ InterlockedIncrement() [1/4]

static FORCEINLINE int16 FWindowsPlatformAtomics::InterlockedIncrement ( volatile int16 * Value)
inlinestatic

Definition at line 25 of file WindowsPlatformAtomics.h.

◆ InterlockedIncrement() [2/4]

static FORCEINLINE int32 FWindowsPlatformAtomics::InterlockedIncrement ( volatile int32 * Value)
inlinestatic

Definition at line 30 of file WindowsPlatformAtomics.h.

◆ InterlockedIncrement() [3/4]

static FORCEINLINE int64 FWindowsPlatformAtomics::InterlockedIncrement ( volatile int64 * Value)
inlinestatic

Definition at line 35 of file WindowsPlatformAtomics.h.

◆ InterlockedIncrement() [4/4]

static FORCEINLINE int8 FWindowsPlatformAtomics::InterlockedIncrement ( volatile int8 * Value)
inlinestatic

Definition at line 20 of file WindowsPlatformAtomics.h.

◆ InterlockedOr() [1/4]

static FORCEINLINE int16 FWindowsPlatformAtomics::InterlockedOr ( volatile int16 * Value,
const int16 OrValue )
inlinestatic

Definition at line 224 of file WindowsPlatformAtomics.h.

◆ InterlockedOr() [2/4]

static FORCEINLINE int32 FWindowsPlatformAtomics::InterlockedOr ( volatile int32 * Value,
const int32 OrValue )
inlinestatic

Definition at line 229 of file WindowsPlatformAtomics.h.

◆ InterlockedOr() [3/4]

static FORCEINLINE int64 FWindowsPlatformAtomics::InterlockedOr ( volatile int64 * Value,
const int64 OrValue )
inlinestatic

Definition at line 234 of file WindowsPlatformAtomics.h.

◆ InterlockedOr() [4/4]

static FORCEINLINE int8 FWindowsPlatformAtomics::InterlockedOr ( volatile int8 * Value,
const int8 OrValue )
inlinestatic

Definition at line 219 of file WindowsPlatformAtomics.h.

◆ InterlockedXor() [1/4]

static FORCEINLINE int16 FWindowsPlatformAtomics::InterlockedXor ( volatile int16 * Value,
const int16 XorValue )
inlinestatic

Definition at line 256 of file WindowsPlatformAtomics.h.

◆ InterlockedXor() [2/4]

static FORCEINLINE int32 FWindowsPlatformAtomics::InterlockedXor ( volatile int32 * Value,
const int32 XorValue )
inlinestatic

Definition at line 261 of file WindowsPlatformAtomics.h.

◆ InterlockedXor() [3/4]

static FORCEINLINE int64 FWindowsPlatformAtomics::InterlockedXor ( volatile int64 * Value,
const int64 XorValue )
inlinestatic

Definition at line 266 of file WindowsPlatformAtomics.h.

◆ InterlockedXor() [4/4]

static FORCEINLINE int8 FWindowsPlatformAtomics::InterlockedXor ( volatile int8 * Value,
const int8 XorValue )
inlinestatic

Definition at line 251 of file WindowsPlatformAtomics.h.


The documentation for this struct was generated from the following file: