source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/synchapi.h@ 1181

Last change on this file since 1181 was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File size: 8.4 KB
Line 
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
14extern "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
Note: See TracBrowser for help on using the repository browser.