• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 //          Copyright Oliver Kowalke 2014.
3 // Distributed under the Boost Software License, Version 1.0.
4 //    (See accompanying file LICENSE_1_0.txt or copy at
5 //          http://www.boost.org/LICENSE_1_0.txt)
6 
7 #ifndef BOOST_CONTEXT_STACK_CONTEXT_H
8 #define BOOST_CONTEXT_STACK_CONTEXT_H
9 
10 #include <cstddef>
11 
12 #include <boost/config.hpp>
13 
14 #include <boost/context/detail/config.hpp>
15 
16 #ifdef BOOST_HAS_ABI_HEADERS
17 #  include BOOST_ABI_PREFIX
18 #endif
19 
20 namespace boost {
21 namespace context {
22 
23 #if ! defined(BOOST_CONTEXT_NO_CXX11)
24 struct BOOST_CONTEXT_DECL stack_context {
25 # if defined(BOOST_USE_SEGMENTED_STACKS)
26     typedef void *  segments_context[BOOST_CONTEXT_SEGMENTS];
27 # endif
28 
29     std::size_t             size{ 0 };
30     void                *   sp{ nullptr };
31 # if defined(BOOST_USE_SEGMENTED_STACKS)
32     segments_context        segments_ctx{};
33 # endif
34 # if defined(BOOST_USE_VALGRIND)
35     unsigned                valgrind_stack_id{ 0 };
36 # endif
37 };
38 #else
39 struct BOOST_CONTEXT_DECL stack_context {
40 # if defined(BOOST_USE_SEGMENTED_STACKS)
41     typedef void *  segments_context[BOOST_CONTEXT_SEGMENTS];
42 # endif
43 
44     std::size_t             size;
45     void                *   sp;
46 # if defined(BOOST_USE_SEGMENTED_STACKS)
47     segments_context        segments_ctx;
48 # endif
49 # if defined(BOOST_USE_VALGRIND)
50     unsigned                valgrind_stack_id;
51 # endif
52 
53     stack_context() :
54         size( 0),
55         sp( 0)
56 # if defined(BOOST_USE_SEGMENTED_STACKS)
57         , segments_ctx()
58 # endif
59 # if defined(BOOST_USE_VALGRIND)
60         , valgrind_stack_id( 0)
61 # endif
62         {}
63 };
64 #endif
65 
66 }}
67 
68 #ifdef BOOST_HAS_ABI_HEADERS
69 #  include BOOST_ABI_SUFFIX
70 #endif
71 
72 #endif // BOOST_CONTEXT_STACK_CONTEXT_H
73