FreeRDP
interlocked.c File Reference
#include <winpr/config.h>
#include <winpr/platform.h>
#include <winpr/synch.h>
#include <winpr/handle.h>
#include <winpr/interlocked.h>
#include <stdio.h>
#include <stdlib.h>

Functions

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

Function Documentation

◆ AppendTailList()

VOID AppendTailList ( WINPR_PLIST_ENTRY  ListHead,
WINPR_PLIST_ENTRY  ListToAppend 
)

◆ InitializeListHead()

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:

◆ InitializeSListHead()

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:

◆ InsertHeadList()

VOID InsertHeadList ( WINPR_PLIST_ENTRY  ListHead,
WINPR_PLIST_ENTRY  Entry 
)
Here is the caller graph for this function:

◆ InsertTailList()

VOID InsertTailList ( WINPR_PLIST_ENTRY  ListHead,
WINPR_PLIST_ENTRY  Entry 
)
Here is the caller graph for this function:

◆ InterlockedCompareExchange()

LONG InterlockedCompareExchange ( LONG volatile *  Destination,
LONG  Exchange,
LONG  Comperand 
)
Here is the caller graph for this function:

◆ InterlockedCompareExchange64()

LONGLONG InterlockedCompareExchange64 ( LONGLONG volatile *  Destination,
LONGLONG  Exchange,
LONGLONG  Comperand 
)
Here is the caller graph for this function:

◆ InterlockedCompareExchangePointer()

PVOID InterlockedCompareExchangePointer ( PVOID volatile *  Destination,
PVOID  Exchange,
PVOID  Comperand 
)
Here is the caller graph for this function:

◆ InterlockedDecrement()

LONG InterlockedDecrement ( LONG volatile *  Addend)
Here is the caller graph for this function:

◆ InterlockedExchange()

LONG InterlockedExchange ( LONG volatile *  Target,
LONG  Value 
)
Here is the caller graph for this function:

◆ InterlockedExchangeAdd()

LONG InterlockedExchangeAdd ( LONG volatile *  Addend,
LONG  Value 
)
Here is the caller graph for this function:

◆ InterlockedFlushSList()

WINPR_PSLIST_ENTRY InterlockedFlushSList ( WINPR_PSLIST_HEADER  ListHead)
Here is the call graph for this function:

◆ InterlockedIncrement()

LONG InterlockedIncrement ( LONG volatile *  Addend)
Here is the caller graph for this function:

◆ InterlockedPopEntrySList()

WINPR_PSLIST_ENTRY InterlockedPopEntrySList ( WINPR_PSLIST_HEADER  ListHead)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ InterlockedPushEntrySList()

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:

◆ InterlockedPushListSListEx()

WINPR_PSLIST_ENTRY InterlockedPushListSListEx ( WINPR_PSLIST_HEADER  ListHead,
WINPR_PSLIST_ENTRY  List,
WINPR_PSLIST_ENTRY  ListEnd,
ULONG  Count 
)

◆ IsListEmpty()

BOOL IsListEmpty ( const WINPR_LIST_ENTRY *  ListHead)
Here is the caller graph for this function:

◆ PopEntryList()

WINPR_PSINGLE_LIST_ENTRY PopEntryList ( WINPR_PSINGLE_LIST_ENTRY  ListHead)

◆ PushEntryList()

VOID PushEntryList ( WINPR_PSINGLE_LIST_ENTRY  ListHead,
WINPR_PSINGLE_LIST_ENTRY  Entry 
)

◆ QueryDepthSList()

USHORT QueryDepthSList ( WINPR_PSLIST_HEADER  ListHead)
Here is the caller graph for this function:

◆ RemoveEntryList()

BOOL RemoveEntryList ( WINPR_PLIST_ENTRY  Entry)

◆ RemoveHeadList()

WINPR_PLIST_ENTRY RemoveHeadList ( WINPR_PLIST_ENTRY  ListHead)
Here is the caller graph for this function:

◆ RemoveTailList()

WINPR_PLIST_ENTRY RemoveTailList ( WINPR_PLIST_ENTRY  ListHead)
Here is the caller graph for this function: