1 
2 //          Copyright Oliver Kowalke 2009.
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_COROUTINES_STACK_CONTEXT_H
8 #define BOOST_COROUTINES_STACK_CONTEXT_H
9 
10 #include <cstddef>
11 
12 #include <boost/config.hpp>
13 
14 #include <boost/coroutine/detail/config.hpp>
15 
16 #ifdef BOOST_HAS_ABI_HEADERS
17 #  include BOOST_ABI_PREFIX
18 #endif
19 
20 namespace boost {
21 namespace coroutines {
22 
23 #if defined(BOOST_USE_SEGMENTED_STACKS)
24 struct stack_context
25 {
26     typedef void *  segments_context[BOOST_COROUTINES_SEGMENTS];
27 
28     std::size_t             size;
29     void                *   sp;
30     segments_context        segments_ctx;
31 #if defined(BOOST_USE_VALGRIND)
32     unsigned                valgrind_stack_id;
33 #endif
34 
stack_contextboost::coroutines::stack_context35     stack_context() :
36         size( 0), sp( 0), segments_ctx()
37 #if defined(BOOST_USE_VALGRIND)
38         , valgrind_stack_id( 0)
39 #endif
40     {}
41 };
42 #else
43 struct stack_context
44 {
45     std::size_t             size;
46     void                *   sp;
47 #if defined(BOOST_USE_VALGRIND)
48     unsigned                valgrind_stack_id;
49 #endif
50 
51     stack_context() :
52         size( 0), sp( 0)
53 #if defined(BOOST_USE_VALGRIND)
54         , valgrind_stack_id( 0)
55 #endif
56     {}
57 };
58 #endif
59 
60 }}
61 
62 #ifdef BOOST_HAS_ABI_HEADERS
63 #  include BOOST_ABI_SUFFIX
64 #endif
65 
66 #endif // BOOST_COROUTINES_STACK_CONTEXT_H
67