synchapi.h 8.4 KB

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