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