FreeRDP
interlocked.h File Reference
#include <winpr/spec.h>
#include <winpr/winpr.h>
#include <winpr/wtypes.h>
#include <winpr/platform.h>
This graph shows which files directly or indirectly include this file:

Data Structures

struct  WINPR_PLIST_ENTRY
 
struct  WINPR_PSINGLE_LIST_ENTRY
 
struct  WINPR_LIST_ENTRY32
 
struct  WINPR_LIST_ENTRY64
 
union  WINPR_PSLIST_HEADER
 

Macros

#define CONTAINING_RECORD(address, type, field)   ((type *)(((ULONG_PTR) address) - (ULONG_PTR)(&(((type *) 0)->field))))
 
#define WINPR_SLIST_ENTRY   WINPR_SINGLE_LIST_ENTRY
 
#define _WINPR_SLIST_ENTRY   _WINPR_SINGLE_LIST_ENTRY
 
#define WINPR_PSLIST_ENTRY   WINPR_PSINGLE_LIST_ENTRY
 
#define WINPR_INTERLOCKED_COMPARE_EXCHANGE64   1
 

Typedefs

typedef WINPR_LIST_ENTRY32WINPR_PLIST_ENTRY32
 
typedef WINPR_LIST_ENTRY64WINPR_PLIST_ENTRY64
 

Functions

WINPR_API VOID InitializeSListHead (WINPR_PSLIST_HEADER ListHead)
 
WINPR_API WINPR_PSLIST_ENTRY InterlockedPushEntrySList (WINPR_PSLIST_HEADER ListHead, WINPR_PSLIST_ENTRY ListEntry)
 
WINPR_API WINPR_PSLIST_ENTRY InterlockedPushListSListEx (WINPR_PSLIST_HEADER ListHead, WINPR_PSLIST_ENTRY List, WINPR_PSLIST_ENTRY ListEnd, ULONG Count)
 
WINPR_API WINPR_PSLIST_ENTRY InterlockedPopEntrySList (WINPR_PSLIST_HEADER ListHead)
 
WINPR_API WINPR_PSLIST_ENTRY InterlockedFlushSList (WINPR_PSLIST_HEADER ListHead)
 
WINPR_API USHORT QueryDepthSList (WINPR_PSLIST_HEADER ListHead)
 
WINPR_API LONG InterlockedIncrement (LONG volatile *Addend)
 
WINPR_API LONG InterlockedDecrement (LONG volatile *Addend)
 
WINPR_API LONG InterlockedExchange (LONG volatile *Target, LONG Value)
 
WINPR_API LONG InterlockedExchangeAdd (LONG volatile *Addend, LONG Value)
 
WINPR_API LONG InterlockedCompareExchange (LONG volatile *Destination, LONG Exchange, LONG Comperand)
 
WINPR_API PVOID InterlockedCompareExchangePointer (PVOID volatile *Destination, PVOID Exchange, PVOID Comperand)
 
WINPR_API LONGLONG InterlockedCompareExchange64 (LONGLONG volatile *Destination, LONGLONG Exchange, LONGLONG Comperand)
 
WINPR_API VOID InitializeListHead (WINPR_PLIST_ENTRY ListHead)
 
WINPR_API BOOL IsListEmpty (const WINPR_LIST_ENTRY *ListHead)
 
WINPR_API BOOL RemoveEntryList (WINPR_PLIST_ENTRY Entry)
 
WINPR_API VOID InsertHeadList (WINPR_PLIST_ENTRY ListHead, WINPR_PLIST_ENTRY Entry)
 
WINPR_API WINPR_PLIST_ENTRY RemoveHeadList (WINPR_PLIST_ENTRY ListHead)
 
WINPR_API VOID InsertTailList (WINPR_PLIST_ENTRY ListHead, WINPR_PLIST_ENTRY Entry)
 
WINPR_API WINPR_PLIST_ENTRY RemoveTailList (WINPR_PLIST_ENTRY ListHead)
 
WINPR_API VOID AppendTailList (WINPR_PLIST_ENTRY ListHead, WINPR_PLIST_ENTRY ListToAppend)
 
WINPR_API VOID PushEntryList (WINPR_PSINGLE_LIST_ENTRY ListHead, WINPR_PSINGLE_LIST_ENTRY Entry)
 
WINPR_API WINPR_PSINGLE_LIST_ENTRY PopEntryList (WINPR_PSINGLE_LIST_ENTRY ListHead)
 

Macro Definition Documentation

#define _WINPR_SLIST_ENTRY   _WINPR_SINGLE_LIST_ENTRY
#define CONTAINING_RECORD (   address,
  type,
  field 
)    ((type *)(((ULONG_PTR) address) - (ULONG_PTR)(&(((type *) 0)->field))))

WinPR: Windows Portable Runtime Interlocked Singly-Linked Lists

Copyright 2012 Marc-Andre Moreau marca.nosp@m.ndre.nosp@m..more.nosp@m.au@g.nosp@m.mail..nosp@m.com

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

#define WINPR_INTERLOCKED_COMPARE_EXCHANGE64   1
#define WINPR_PSLIST_ENTRY   WINPR_PSINGLE_LIST_ENTRY
#define WINPR_SLIST_ENTRY   WINPR_SINGLE_LIST_ENTRY

Typedef Documentation

Function Documentation

WINPR_API VOID AppendTailList ( WINPR_PLIST_ENTRY  ListHead,
WINPR_PLIST_ENTRY  ListToAppend 
)
WINPR_API VOID InitializeListHead ( WINPR_PLIST_ENTRY  ListHead)

Kernel-Mode Basics: Windows Linked Lists: http://www.osronline.com/article.cfm?article=499

Singly and Doubly Linked Lists: http://msdn.microsoft.com/en-us/library/windows/hardware/ff563802/

Here is the caller graph for this function:

WINPR_API VOID InitializeSListHead ( WINPR_PSLIST_HEADER  ListHead)

WinPR: Windows Portable Runtime Interlocked Singly-Linked Lists

Copyright 2012 Marc-Andre Moreau marca.nosp@m.ndre.nosp@m..more.nosp@m.au@g.nosp@m.mail..nosp@m.com

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Here is the caller graph for this function:

WINPR_API VOID InsertHeadList ( WINPR_PLIST_ENTRY  ListHead,
WINPR_PLIST_ENTRY  Entry 
)

Here is the caller graph for this function:

WINPR_API VOID InsertTailList ( WINPR_PLIST_ENTRY  ListHead,
WINPR_PLIST_ENTRY  Entry 
)

Here is the caller graph for this function:

WINPR_API LONG InterlockedCompareExchange ( LONG volatile *  Destination,
LONG  Exchange,
LONG  Comperand 
)

Here is the caller graph for this function:

WINPR_API LONGLONG InterlockedCompareExchange64 ( LONGLONG volatile *  Destination,
LONGLONG  Exchange,
LONGLONG  Comperand 
)

Here is the caller graph for this function:

WINPR_API PVOID InterlockedCompareExchangePointer ( PVOID volatile *  Destination,
PVOID  Exchange,
PVOID  Comperand 
)

Here is the call graph for this function:

Here is the caller graph for this function:

WINPR_API LONG InterlockedDecrement ( LONG volatile *  Addend)

Here is the caller graph for this function:

WINPR_API LONG InterlockedExchange ( LONG volatile *  Target,
LONG  Value 
)

Here is the caller graph for this function:

WINPR_API LONG InterlockedExchangeAdd ( LONG volatile *  Addend,
LONG  Value 
)

Here is the caller graph for this function:

WINPR_API WINPR_PSLIST_ENTRY InterlockedFlushSList ( WINPR_PSLIST_HEADER  ListHead)

Here is the call graph for this function:

WINPR_API LONG InterlockedIncrement ( LONG volatile *  Addend)

Here is the caller graph for this function:

WINPR_API WINPR_PSLIST_ENTRY InterlockedPopEntrySList ( WINPR_PSLIST_HEADER  ListHead)

Here is the call graph for this function:

Here is the caller graph for this function:

WINPR_API WINPR_PSLIST_ENTRY InterlockedPushEntrySList ( WINPR_PSLIST_HEADER  ListHead,
WINPR_PSLIST_ENTRY  ListEntry 
)

Here is the call graph for this function:

Here is the caller graph for this function:

WINPR_API WINPR_PSLIST_ENTRY InterlockedPushListSListEx ( WINPR_PSLIST_HEADER  ListHead,
WINPR_PSLIST_ENTRY  List,
WINPR_PSLIST_ENTRY  ListEnd,
ULONG  Count 
)
WINPR_API BOOL IsListEmpty ( const WINPR_LIST_ENTRY *  ListHead)

Here is the caller graph for this function:

WINPR_API WINPR_PSINGLE_LIST_ENTRY PopEntryList ( WINPR_PSINGLE_LIST_ENTRY  ListHead)
WINPR_API VOID PushEntryList ( WINPR_PSINGLE_LIST_ENTRY  ListHead,
WINPR_PSINGLE_LIST_ENTRY  Entry 
)
WINPR_API USHORT QueryDepthSList ( WINPR_PSLIST_HEADER  ListHead)

Here is the caller graph for this function:

WINPR_API BOOL RemoveEntryList ( WINPR_PLIST_ENTRY  Entry)
WINPR_API WINPR_PLIST_ENTRY RemoveHeadList ( WINPR_PLIST_ENTRY  ListHead)

Here is the caller graph for this function:

WINPR_API WINPR_PLIST_ENTRY RemoveTailList ( WINPR_PLIST_ENTRY  ListHead)

Here is the caller graph for this function: