FreeRDP
|
#include <winpr/spec.h>
#include <winpr/platform.h>
#include <winpr/winpr.h>
#include <winpr/wtypes.h>
Data Structures | |
struct | WINPR_PLIST_ENTRY |
struct | WINPR_PSINGLE_LIST_ENTRY |
struct | WINPR_LIST_ENTRY32 |
struct | WINPR_LIST_ENTRY64 |
union | WINPR_SLIST_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_ENTRY32 * | WINPR_PLIST_ENTRY32 |
typedef WINPR_LIST_ENTRY64 * | WINPR_PLIST_ENTRY64 |
typedef union WINPR_SLIST_HEADER * | WINPR_PSLIST_HEADER |
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) |
#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 ndre .more au@g mail. 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 WINPR_LIST_ENTRY32* WINPR_PLIST_ENTRY32 |
typedef WINPR_LIST_ENTRY64* WINPR_PLIST_ENTRY64 |
typedef union WINPR_SLIST_HEADER * WINPR_PSLIST_HEADER |
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/
WINPR_API VOID InitializeSListHead | ( | WINPR_PSLIST_HEADER | ListHead | ) |
WinPR: Windows Portable Runtime Interlocked Singly-Linked Lists
Copyright 2012 Marc-Andre Moreau marca ndre .more au@g mail. 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.
WINPR_API VOID InsertHeadList | ( | WINPR_PLIST_ENTRY | ListHead, |
WINPR_PLIST_ENTRY | Entry | ||
) |
WINPR_API VOID InsertTailList | ( | WINPR_PLIST_ENTRY | ListHead, |
WINPR_PLIST_ENTRY | Entry | ||
) |
WINPR_API LONG InterlockedCompareExchange | ( | LONG volatile * | Destination, |
LONG | Exchange, | ||
LONG | Comperand | ||
) |
WINPR_API LONGLONG InterlockedCompareExchange64 | ( | LONGLONG volatile * | Destination, |
LONGLONG | Exchange, | ||
LONGLONG | Comperand | ||
) |
WINPR_API PVOID InterlockedCompareExchangePointer | ( | PVOID volatile * | Destination, |
PVOID | Exchange, | ||
PVOID | Comperand | ||
) |
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 WINPR_PSLIST_ENTRY InterlockedFlushSList | ( | WINPR_PSLIST_HEADER | ListHead | ) |
WINPR_API LONG InterlockedIncrement | ( | LONG volatile * | Addend | ) |
WINPR_API WINPR_PSLIST_ENTRY InterlockedPopEntrySList | ( | 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 BOOL IsListEmpty | ( | const WINPR_LIST_ENTRY * | ListHead | ) |
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 | ) |
WINPR_API BOOL RemoveEntryList | ( | WINPR_PLIST_ENTRY | Entry | ) |
WINPR_API WINPR_PLIST_ENTRY RemoveHeadList | ( | WINPR_PLIST_ENTRY | ListHead | ) |
WINPR_API WINPR_PLIST_ENTRY RemoveTailList | ( | WINPR_PLIST_ENTRY | ListHead | ) |