]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | #ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_HPP_INCLUDED |
2 | #define BOOST_SMART_PTR_DETAIL_SPINLOCK_HPP_INCLUDED | |
3 | ||
4 | // MS compatible compilers support #pragma once | |
5 | ||
6 | #if defined(_MSC_VER) && (_MSC_VER >= 1020) | |
7 | # pragma once | |
8 | #endif | |
9 | ||
10 | // | |
11 | // boost/detail/spinlock.hpp | |
12 | // | |
13 | // Copyright (c) 2008 Peter Dimov | |
14 | // | |
15 | // Distributed under the Boost Software License, Version 1.0. | |
16 | // See accompanying file LICENSE_1_0.txt or copy at | |
17 | // http://www.boost.org/LICENSE_1_0.txt) | |
18 | // | |
19 | // struct spinlock | |
20 | // { | |
21 | // void lock(); | |
22 | // bool try_lock(); | |
23 | // void unlock(); | |
24 | // | |
25 | // class scoped_lock; | |
26 | // }; | |
27 | // | |
28 | // #define BOOST_DETAIL_SPINLOCK_INIT <unspecified> | |
29 | // | |
30 | ||
20effc67 TL |
31 | #include <boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp> |
32 | #include <boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp> | |
7c673cae | 33 | #include <boost/config.hpp> |
7c673cae FG |
34 | |
35 | #if defined( BOOST_SP_USE_STD_ATOMIC ) | |
20effc67 | 36 | # include <boost/smart_ptr/detail/spinlock_std_atomic.hpp> |
7c673cae FG |
37 | |
38 | #elif defined( BOOST_SP_USE_PTHREADS ) | |
39 | # include <boost/smart_ptr/detail/spinlock_pt.hpp> | |
40 | ||
20effc67 TL |
41 | #elif defined( BOOST_SP_HAS_GCC_INTRINSICS ) |
42 | # include <boost/smart_ptr/detail/spinlock_gcc_atomic.hpp> | |
43 | ||
7c673cae FG |
44 | #elif !defined( BOOST_NO_CXX11_HDR_ATOMIC ) |
45 | # include <boost/smart_ptr/detail/spinlock_std_atomic.hpp> | |
46 | ||
47 | #elif defined(__GNUC__) && defined( __arm__ ) && !defined( __thumb__ ) | |
48 | # include <boost/smart_ptr/detail/spinlock_gcc_arm.hpp> | |
49 | ||
20effc67 | 50 | #elif defined( BOOST_SP_HAS_SYNC_INTRINSICS ) |
7c673cae FG |
51 | # include <boost/smart_ptr/detail/spinlock_sync.hpp> |
52 | ||
53 | #elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) | |
54 | # include <boost/smart_ptr/detail/spinlock_w32.hpp> | |
55 | ||
56 | #elif defined(BOOST_HAS_PTHREADS) | |
57 | # include <boost/smart_ptr/detail/spinlock_pt.hpp> | |
58 | ||
59 | #elif !defined(BOOST_HAS_THREADS) | |
60 | # include <boost/smart_ptr/detail/spinlock_nt.hpp> | |
61 | ||
62 | #else | |
63 | # error Unrecognized threading platform | |
64 | #endif | |
65 | ||
66 | #endif // #ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_HPP_INCLUDED |