| 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 |