]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/winapi/include/boost/detail/winapi/condition_variable.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / winapi / include / boost / detail / winapi / condition_variable.hpp
CommitLineData
7c673cae
FG
1// condition_variable.hpp --------------------------------------------------------------//
2
3// Copyright 2010 Vicente J. Botet Escriba
4// Copyright 2015 Andrey Semashev
5
6// Distributed under the Boost Software License, Version 1.0.
7// See http://www.boost.org/LICENSE_1_0.txt
8
9
10#ifndef BOOST_DETAIL_WINAPI_CONDITION_VARIABLE_HPP
11#define BOOST_DETAIL_WINAPI_CONDITION_VARIABLE_HPP
12
13#include <boost/detail/winapi/config.hpp>
14
15#ifdef BOOST_HAS_PRAGMA_ONCE
16#pragma once
17#endif
18
19#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
20
21#include <boost/detail/winapi/basic_types.hpp>
22
23#if !defined( BOOST_USE_WINDOWS_H )
24extern "C" {
25struct _RTL_CONDITION_VARIABLE;
26struct _RTL_CRITICAL_SECTION;
27struct _RTL_SRWLOCK;
28
29BOOST_SYMBOL_IMPORT boost::detail::winapi::VOID_ WINAPI
30InitializeConditionVariable(::_RTL_CONDITION_VARIABLE* ConditionVariable);
31
32BOOST_SYMBOL_IMPORT boost::detail::winapi::VOID_ WINAPI
33WakeConditionVariable(::_RTL_CONDITION_VARIABLE* ConditionVariable);
34
35BOOST_SYMBOL_IMPORT boost::detail::winapi::VOID_ WINAPI
36WakeAllConditionVariable(::_RTL_CONDITION_VARIABLE* ConditionVariable);
37
38BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
39SleepConditionVariableCS(
40 ::_RTL_CONDITION_VARIABLE* ConditionVariable,
41 ::_RTL_CRITICAL_SECTION* CriticalSection,
42 boost::detail::winapi::DWORD_ dwMilliseconds);
43
44BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
45SleepConditionVariableSRW(
46 ::_RTL_CONDITION_VARIABLE* ConditionVariable,
47 ::_RTL_SRWLOCK* SRWLock,
48 boost::detail::winapi::DWORD_ dwMilliseconds,
49 boost::detail::winapi::ULONG_ Flags);
50}
51#endif
52
53namespace boost {
54namespace detail {
55namespace winapi {
56
57typedef struct BOOST_DETAIL_WINAPI_MAY_ALIAS _RTL_CONDITION_VARIABLE {
58 PVOID_ Ptr;
59} CONDITION_VARIABLE_, *PCONDITION_VARIABLE_;
60
61#if defined( BOOST_USE_WINDOWS_H )
62#define BOOST_DETAIL_WINAPI_CONDITION_VARIABLE_INIT CONDITION_VARIABLE_INIT
63#else
64#define BOOST_DETAIL_WINAPI_CONDITION_VARIABLE {0}
65#endif
66
67struct _RTL_CRITICAL_SECTION;
68struct _RTL_SRWLOCK;
69
70BOOST_FORCEINLINE VOID_ InitializeConditionVariable(PCONDITION_VARIABLE_ ConditionVariable)
71{
72 ::InitializeConditionVariable(reinterpret_cast< ::_RTL_CONDITION_VARIABLE* >(ConditionVariable));
73}
74
75BOOST_FORCEINLINE VOID_ WakeConditionVariable(PCONDITION_VARIABLE_ ConditionVariable)
76{
77 ::WakeConditionVariable(reinterpret_cast< ::_RTL_CONDITION_VARIABLE* >(ConditionVariable));
78}
79
80BOOST_FORCEINLINE VOID_ WakeAllConditionVariable(PCONDITION_VARIABLE_ ConditionVariable)
81{
82 ::WakeAllConditionVariable(reinterpret_cast< ::_RTL_CONDITION_VARIABLE* >(ConditionVariable));
83}
84
85BOOST_FORCEINLINE BOOL_ SleepConditionVariableCS(
86 PCONDITION_VARIABLE_ ConditionVariable,
87 _RTL_CRITICAL_SECTION* CriticalSection,
88 DWORD_ dwMilliseconds)
89{
90 return ::SleepConditionVariableCS(
91 reinterpret_cast< ::_RTL_CONDITION_VARIABLE* >(ConditionVariable),
92 reinterpret_cast< ::_RTL_CRITICAL_SECTION* >(CriticalSection),
93 dwMilliseconds);
94}
95
96BOOST_FORCEINLINE BOOL_ SleepConditionVariableSRW(
97 PCONDITION_VARIABLE_ ConditionVariable,
98 _RTL_SRWLOCK* SRWLock,
99 DWORD_ dwMilliseconds,
100 ULONG_ Flags)
101{
102 return ::SleepConditionVariableSRW(
103 reinterpret_cast< ::_RTL_CONDITION_VARIABLE* >(ConditionVariable),
104 reinterpret_cast< ::_RTL_SRWLOCK* >(SRWLock),
105 dwMilliseconds,
106 Flags);
107}
108
109#if defined( BOOST_USE_WINDOWS_H )
110const ULONG_ CONDITION_VARIABLE_LOCKMODE_SHARED_ = CONDITION_VARIABLE_LOCKMODE_SHARED;
111#else // defined( BOOST_USE_WINDOWS_H )
112const ULONG_ CONDITION_VARIABLE_LOCKMODE_SHARED_ = 0x00000001;
113#endif // defined( BOOST_USE_WINDOWS_H )
114
115const ULONG_ condition_variable_lockmode_shared = CONDITION_VARIABLE_LOCKMODE_SHARED_;
116
117}
118}
119}
120
121#endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
122
123#endif // BOOST_DETAIL_WINAPI_CONDITION_VARIABLE_HPP