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 _SYNCHAPI_H_
|
---|
6 | #define _SYNCHAPI_H_
|
---|
7 |
|
---|
8 | #include <apiset.h>
|
---|
9 | #include <apisetcconv.h>
|
---|
10 | #include <minwindef.h>
|
---|
11 | #include <minwinbase.h>
|
---|
12 |
|
---|
13 | #ifdef __cplusplus
|
---|
14 | extern "C" {
|
---|
15 | #endif
|
---|
16 |
|
---|
17 | #define SRWLOCK_INIT RTL_SRWLOCK_INIT
|
---|
18 |
|
---|
19 | #define INIT_ONCE_STATIC_INIT RTL_RUN_ONCE_INIT
|
---|
20 |
|
---|
21 | #define INIT_ONCE_CHECK_ONLY RTL_RUN_ONCE_CHECK_ONLY
|
---|
22 | #define INIT_ONCE_ASYNC RTL_RUN_ONCE_ASYNC
|
---|
23 | #define INIT_ONCE_INIT_FAILED RTL_RUN_ONCE_INIT_FAILED
|
---|
24 |
|
---|
25 | #define INIT_ONCE_CTX_RESERVED_BITS RTL_RUN_ONCE_CTX_RESERVED_BITS
|
---|
26 |
|
---|
27 | #define CONDITION_VARIABLE_INIT RTL_CONDITION_VARIABLE_INIT
|
---|
28 |
|
---|
29 | #define CONDITION_VARIABLE_LOCKMODE_SHARED RTL_CONDITION_VARIABLE_LOCKMODE_SHARED
|
---|
30 |
|
---|
31 | #define MUTEX_MODIFY_STATE MUTANT_QUERY_STATE
|
---|
32 | #define MUTEX_ALL_ACCESS MUTANT_ALL_ACCESS
|
---|
33 |
|
---|
34 | typedef RTL_SRWLOCK SRWLOCK, *PSRWLOCK;
|
---|
35 |
|
---|
36 | typedef RTL_RUN_ONCE INIT_ONCE;
|
---|
37 | typedef PRTL_RUN_ONCE PINIT_ONCE;
|
---|
38 | typedef PRTL_RUN_ONCE LPINIT_ONCE;
|
---|
39 |
|
---|
40 | typedef WINBOOL (WINAPI *PINIT_ONCE_FN) (PINIT_ONCE InitOnce, PVOID Parameter, PVOID *Context);
|
---|
41 | typedef RTL_CONDITION_VARIABLE CONDITION_VARIABLE, *PCONDITION_VARIABLE;
|
---|
42 |
|
---|
43 | WINBASEAPI VOID WINAPI EnterCriticalSection (LPCRITICAL_SECTION lpCriticalSection);
|
---|
44 | WINBASEAPI VOID WINAPI LeaveCriticalSection (LPCRITICAL_SECTION lpCriticalSection);
|
---|
45 | WINBASEAPI WINBOOL WINAPI TryEnterCriticalSection (LPCRITICAL_SECTION lpCriticalSection);
|
---|
46 | WINBASEAPI VOID WINAPI DeleteCriticalSection (LPCRITICAL_SECTION lpCriticalSection);
|
---|
47 | WINBASEAPI WINBOOL WINAPI SetEvent (HANDLE hEvent);
|
---|
48 | WINBASEAPI WINBOOL WINAPI ResetEvent (HANDLE hEvent);
|
---|
49 | WINBASEAPI WINBOOL WINAPI ReleaseSemaphore (HANDLE hSemaphore, LONG lReleaseCount, LPLONG lpPreviousCount);
|
---|
50 | WINBASEAPI WINBOOL WINAPI ReleaseMutex (HANDLE hMutex);
|
---|
51 | WINBASEAPI DWORD WINAPI WaitForSingleObjectEx (HANDLE hHandle, DWORD dwMilliseconds, WINBOOL bAlertable);
|
---|
52 | WINBASEAPI DWORD WINAPI WaitForMultipleObjectsEx (DWORD nCount, CONST HANDLE *lpHandles, WINBOOL bWaitAll, DWORD dwMilliseconds, WINBOOL bAlertable);
|
---|
53 | WINBASEAPI HANDLE WINAPI OpenMutexW (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCWSTR lpName);
|
---|
54 | WINBASEAPI HANDLE WINAPI OpenEventA (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCSTR lpName);
|
---|
55 | WINBASEAPI HANDLE WINAPI OpenEventW (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCWSTR lpName);
|
---|
56 | WINBASEAPI HANDLE WINAPI OpenSemaphoreW (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCWSTR lpName);
|
---|
57 | WINBOOL WINAPI WaitOnAddress (volatile VOID *Address, PVOID CompareAddress, SIZE_T AddressSize, DWORD dwMilliseconds);
|
---|
58 | VOID WINAPI WakeByAddressSingle (PVOID Address);
|
---|
59 | VOID WINAPI WakeByAddressAll (PVOID Address);
|
---|
60 | #if _WIN32_WINNT >= 0x0600
|
---|
61 | #define CREATE_MUTEX_INITIAL_OWNER 0x1
|
---|
62 |
|
---|
63 | #define CREATE_EVENT_MANUAL_RESET 0x1
|
---|
64 | #define CREATE_EVENT_INITIAL_SET 0x2
|
---|
65 |
|
---|
66 | WINBASEAPI VOID WINAPI InitializeSRWLock (PSRWLOCK SRWLock);
|
---|
67 | VOID WINAPI ReleaseSRWLockExclusive (PSRWLOCK SRWLock);
|
---|
68 | VOID WINAPI ReleaseSRWLockShared (PSRWLOCK SRWLock);
|
---|
69 | VOID WINAPI AcquireSRWLockExclusive (PSRWLOCK SRWLock);
|
---|
70 | VOID WINAPI AcquireSRWLockShared (PSRWLOCK SRWLock);
|
---|
71 | WINBASEAPI BOOLEAN WINAPI TryAcquireSRWLockExclusive (PSRWLOCK SRWLock);
|
---|
72 | WINBASEAPI BOOLEAN WINAPI TryAcquireSRWLockShared (PSRWLOCK SRWLock);
|
---|
73 | WINBASEAPI WINBOOL WINAPI InitializeCriticalSectionEx (LPCRITICAL_SECTION lpCriticalSection, DWORD dwSpinCount, DWORD Flags);
|
---|
74 | WINBASEAPI VOID WINAPI InitOnceInitialize (PINIT_ONCE InitOnce);
|
---|
75 | WINBASEAPI WINBOOL WINAPI InitOnceExecuteOnce (PINIT_ONCE InitOnce, PINIT_ONCE_FN InitFn, PVOID Parameter, LPVOID *Context);
|
---|
76 | WINBASEAPI WINBOOL WINAPI InitOnceBeginInitialize (LPINIT_ONCE lpInitOnce, DWORD dwFlags, PBOOL fPending, LPVOID *lpContext);
|
---|
77 | WINBASEAPI WINBOOL WINAPI InitOnceComplete (LPINIT_ONCE lpInitOnce, DWORD dwFlags, LPVOID lpContext);
|
---|
78 | WINBASEAPI VOID WINAPI InitializeConditionVariable (PCONDITION_VARIABLE ConditionVariable);
|
---|
79 | WINBASEAPI VOID WINAPI WakeConditionVariable (PCONDITION_VARIABLE ConditionVariable);
|
---|
80 | WINBASEAPI VOID WINAPI WakeAllConditionVariable (PCONDITION_VARIABLE ConditionVariable);
|
---|
81 | WINBASEAPI WINBOOL WINAPI SleepConditionVariableCS (PCONDITION_VARIABLE ConditionVariable, PCRITICAL_SECTION CriticalSection, DWORD dwMilliseconds);
|
---|
82 | WINBASEAPI WINBOOL WINAPI SleepConditionVariableSRW (PCONDITION_VARIABLE ConditionVariable, PSRWLOCK SRWLock, DWORD dwMilliseconds, ULONG Flags);
|
---|
83 | WINBASEAPI HANDLE WINAPI CreateMutexExA (LPSECURITY_ATTRIBUTES lpMutexAttributes, LPCSTR lpName, DWORD dwFlags, DWORD dwDesiredAccess);
|
---|
84 | WINBASEAPI HANDLE WINAPI CreateMutexExW (LPSECURITY_ATTRIBUTES lpMutexAttributes, LPCWSTR lpName, DWORD dwFlags, DWORD dwDesiredAccess);
|
---|
85 | WINBASEAPI HANDLE WINAPI CreateEventExA (LPSECURITY_ATTRIBUTES lpEventAttributes, LPCSTR lpName, DWORD dwFlags, DWORD dwDesiredAccess);
|
---|
86 | WINBASEAPI HANDLE WINAPI CreateEventExW (LPSECURITY_ATTRIBUTES lpEventAttributes, LPCWSTR lpName, DWORD dwFlags, DWORD dwDesiredAccess);
|
---|
87 | WINBASEAPI HANDLE WINAPI CreateSemaphoreExW (LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialCount, LONG lMaximumCount, LPCWSTR lpName, DWORD dwFlags, DWORD dwDesiredAccess);
|
---|
88 |
|
---|
89 | #define CreateMutexEx __MINGW_NAME_AW(CreateMutexEx)
|
---|
90 | #define CreateEventEx __MINGW_NAME_AW(CreateEventEx)
|
---|
91 | #ifdef UNICODE
|
---|
92 | #define CreateSemaphoreEx CreateSemaphoreExW
|
---|
93 | #endif
|
---|
94 | #endif
|
---|
95 |
|
---|
96 | #ifdef UNICODE
|
---|
97 | #define OpenMutex OpenMutexW
|
---|
98 | #define OpenSemaphore OpenSemaphoreW
|
---|
99 | #endif
|
---|
100 | #define OpenEvent __MINGW_NAME_AW(OpenEvent)
|
---|
101 |
|
---|
102 | typedef VOID (APIENTRY *PTIMERAPCROUTINE) (LPVOID lpArgToCompletionRoutine, DWORD dwTimerLowValue, DWORD dwTimerHighValue);
|
---|
103 |
|
---|
104 | typedef RTL_BARRIER SYNCHRONIZATION_BARRIER;
|
---|
105 | typedef PRTL_BARRIER PSYNCHRONIZATION_BARRIER;
|
---|
106 | typedef PRTL_BARRIER LPSYNCHRONIZATION_BARRIER;
|
---|
107 |
|
---|
108 | #define SYNCHRONIZATION_BARRIER_FLAGS_SPIN_ONLY 0x01
|
---|
109 | #define SYNCHRONIZATION_BARRIER_FLAGS_BLOCK_ONLY 0x02
|
---|
110 | #define SYNCHRONIZATION_BARRIER_FLAGS_NO_DELETE 0x04
|
---|
111 |
|
---|
112 | WINBASEAPI VOID WINAPI InitializeCriticalSection (LPCRITICAL_SECTION lpCriticalSection);
|
---|
113 | WINBASEAPI WINBOOL WINAPI InitializeCriticalSectionAndSpinCount (LPCRITICAL_SECTION lpCriticalSection, DWORD dwSpinCount);
|
---|
114 | WINBASEAPI DWORD WINAPI SetCriticalSectionSpinCount (LPCRITICAL_SECTION lpCriticalSection, DWORD dwSpinCount);
|
---|
115 | WINBASEAPI DWORD WINAPI WaitForSingleObject (HANDLE hHandle, DWORD dwMilliseconds);
|
---|
116 | WINBASEAPI DWORD WINAPI SleepEx (DWORD dwMilliseconds, WINBOOL bAlertable);
|
---|
117 | WINBASEAPI HANDLE WINAPI CreateMutexA (LPSECURITY_ATTRIBUTES lpMutexAttributes, WINBOOL bInitialOwner, LPCSTR lpName);
|
---|
118 | WINBASEAPI HANDLE WINAPI CreateMutexW (LPSECURITY_ATTRIBUTES lpMutexAttributes, WINBOOL bInitialOwner, LPCWSTR lpName);
|
---|
119 | WINBASEAPI HANDLE WINAPI CreateEventA (LPSECURITY_ATTRIBUTES lpEventAttributes, WINBOOL bManualReset, WINBOOL bInitialState, LPCSTR lpName);
|
---|
120 | WINBASEAPI HANDLE WINAPI CreateEventW (LPSECURITY_ATTRIBUTES lpEventAttributes, WINBOOL bManualReset, WINBOOL bInitialState, LPCWSTR lpName);
|
---|
121 | WINBASEAPI WINBOOL WINAPI SetWaitableTimer (HANDLE hTimer, const LARGE_INTEGER *lpDueTime, LONG lPeriod, PTIMERAPCROUTINE pfnCompletionRoutine, LPVOID lpArgToCompletionRoutine, WINBOOL fResume);
|
---|
122 | WINBASEAPI WINBOOL WINAPI CancelWaitableTimer (HANDLE hTimer);
|
---|
123 | WINBASEAPI HANDLE WINAPI OpenWaitableTimerW (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCWSTR lpTimerName);
|
---|
124 | WINBOOL WINAPI EnterSynchronizationBarrier (LPSYNCHRONIZATION_BARRIER lpBarrier, DWORD dwFlags);
|
---|
125 | WINBOOL WINAPI InitializeSynchronizationBarrier (LPSYNCHRONIZATION_BARRIER lpBarrier, LONG lTotalThreads, LONG lSpinCount);
|
---|
126 | WINBOOL WINAPI DeleteSynchronizationBarrier (LPSYNCHRONIZATION_BARRIER lpBarrier);
|
---|
127 | WINBASEAPI VOID WINAPI Sleep (DWORD dwMilliseconds);
|
---|
128 | WINBASEAPI DWORD WINAPI SignalObjectAndWait (HANDLE hObjectToSignal, HANDLE hObjectToWaitOn, DWORD dwMilliseconds, WINBOOL bAlertable);
|
---|
129 | #if _WIN32_WINNT >= 0x0600
|
---|
130 | #define CREATE_WAITABLE_TIMER_MANUAL_RESET 0x1
|
---|
131 | WINBASEAPI HANDLE WINAPI CreateWaitableTimerExW (LPSECURITY_ATTRIBUTES lpTimerAttributes, LPCWSTR lpTimerName, DWORD dwFlags, DWORD dwDesiredAccess);
|
---|
132 |
|
---|
133 | #ifdef UNICODE
|
---|
134 | #define CreateWaitableTimerEx CreateWaitableTimerExW
|
---|
135 | #endif
|
---|
136 | #endif
|
---|
137 |
|
---|
138 | #if _WIN32_WINNT >= 0x0601
|
---|
139 | WINBOOL WINAPI SetWaitableTimerEx (HANDLE hTimer, const LARGE_INTEGER *lpDueTime, LONG lPeriod, PTIMERAPCROUTINE pfnCompletionRoutine, LPVOID lpArgToCompletionRoutine, PREASON_CONTEXT WakeContext, ULONG TolerableDelay);
|
---|
140 | #endif
|
---|
141 |
|
---|
142 | #define CreateMutex __MINGW_NAME_AW(CreateMutex)
|
---|
143 | #define CreateEvent __MINGW_NAME_AW(CreateEvent)
|
---|
144 |
|
---|
145 | #ifdef UNICODE
|
---|
146 | #define OpenWaitableTimer OpenWaitableTimerW
|
---|
147 | #endif
|
---|
148 |
|
---|
149 | #ifdef __cplusplus
|
---|
150 | }
|
---|
151 | #endif
|
---|
152 | #endif
|
---|