1 /**
2  * This file is part of the mingw-w64 runtime package.
3  * No warranty is given; refer to the file DISCLAIMER within this package.
4  */
5 #ifndef _INTERLOCKAPI_H_
6 #define _INTERLOCKAPI_H_
7 
8 #include <apiset.h>
9 #include <apisetcconv.h>
10 #include <minwindef.h>
11 
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 
16 #if !defined (NOWINBASEINTERLOCK) && !defined (_NTOS_)
17 #if defined (_SLIST_HEADER_) && !defined (_NTOSP_)
18   WINBASEAPI VOID WINAPI InitializeSListHead (PSLIST_HEADER ListHead);
19   WINBASEAPI PSLIST_ENTRY WINAPI InterlockedPopEntrySList (PSLIST_HEADER ListHead);
20   WINBASEAPI PSLIST_ENTRY WINAPI InterlockedPushEntrySList (PSLIST_HEADER ListHead, PSLIST_ENTRY ListEntry);
21   WINBASEAPI PSLIST_ENTRY WINAPI InterlockedFlushSList (PSLIST_HEADER ListHead);
22   WINBASEAPI USHORT WINAPI QueryDepthSList (PSLIST_HEADER ListHead);
23 
24 #if NTDDI_VERSION >= 0x06020000
25 #define InterlockedPushListSList InterlockedPushListSListEx
26 
27   WINBASEAPI PSLIST_ENTRY WINAPI InterlockedPushListSListEx (PSLIST_HEADER ListHead, PSLIST_ENTRY List, PSLIST_ENTRY ListEnd, ULONG Count);
28 #endif
29 #endif
30 #endif
31 
32 #ifdef __cplusplus
33 }
34 #endif
35 #endif
36