From 218286bc055e9d9bcbefd3dfa2b38f92a95b15a6 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 23 Jul 2013 17:17:05 +0200 Subject: score: Create stack implementation header Move implementation specific parts of stack.h and stack.inl into new header file stackimpl.h. The stack.h contains now only the application visible API. --- cpukit/score/include/rtems/score/stack.h | 16 ++--- cpukit/score/include/rtems/score/stackimpl.h | 99 ++++++++++++++++++++++++++++ 2 files changed, 106 insertions(+), 9 deletions(-) create mode 100644 cpukit/score/include/rtems/score/stackimpl.h (limited to 'cpukit/score/include/rtems') diff --git a/cpukit/score/include/rtems/score/stack.h b/cpukit/score/include/rtems/score/stack.h index 9aa90425c4..452525e6ae 100644 --- a/cpukit/score/include/rtems/score/stack.h +++ b/cpukit/score/include/rtems/score/stack.h @@ -20,6 +20,12 @@ #ifndef _RTEMS_SCORE_STACK_H #define _RTEMS_SCORE_STACK_H +#include + +#ifdef __cplusplus +extern "C" { +#endif + /** * @defgroup ScoreStack Stack Handler * @@ -30,10 +36,6 @@ */ /**@{*/ -#ifdef __cplusplus -extern "C" { -#endif - /** * The following constant defines the minimum stack size which every * thread must exceed. @@ -57,15 +59,11 @@ typedef struct { */ extern uint32_t rtems_minimum_stack_size; -#ifndef __RTEMS_APPLICATION__ -#include -#endif +/**@}*/ #ifdef __cplusplus } #endif -/**@}*/ - #endif /* end of include file */ diff --git a/cpukit/score/include/rtems/score/stackimpl.h b/cpukit/score/include/rtems/score/stackimpl.h new file mode 100644 index 0000000000..87629011d9 --- /dev/null +++ b/cpukit/score/include/rtems/score/stackimpl.h @@ -0,0 +1,99 @@ +/** + * @file + * + * @brief Inlined Routines from the Stack Handler + * + * This file contains the static inline implementation of the inlined + * routines from the Stack Handler. + */ + +/* + * COPYRIGHT (c) 1989-2006. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + +#ifndef _RTEMS_SCORE_STACKIMPL_H +#define _RTEMS_SCORE_STACKIMPL_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @addtogroup ScoreStack + */ +/**@{**/ + +/** + * This routine initializes the_stack record to indicate that + * size bytes of memory starting at starting_address have been + * reserved for a stack. + */ +RTEMS_INLINE_ROUTINE void _Stack_Initialize ( + Stack_Control *the_stack, + void *starting_address, + size_t size +) +{ + the_stack->area = starting_address; + the_stack->size = size; +} + +/** + * This function returns the minimum stack size configured + * for this application. + * + * @return This method returns the minimum stack size; + */ +RTEMS_INLINE_ROUTINE uint32_t _Stack_Minimum (void) +{ + return rtems_minimum_stack_size; +} + +/** + * This function returns true if size bytes is enough memory for + * a valid stack area on this processor, and false otherwise. + * + * @param[in] size is the stack size to check + * + * @return This method returns true if the stack is large enough. + */ +RTEMS_INLINE_ROUTINE bool _Stack_Is_enough ( + size_t size +) +{ + return ( size >= _Stack_Minimum() ); +} + +/** + * This function returns the appropriate stack size given the requested + * size. If the requested size is below the minimum, then the minimum + * configured stack size is returned. + * + * @param[in] size is the stack size to check + * + * @return This method returns the appropriate stack size. + */ +RTEMS_INLINE_ROUTINE size_t _Stack_Ensure_minimum ( + size_t size +) +{ + if ( size >= _Stack_Minimum() ) + return size; + return _Stack_Minimum(); +} + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ -- cgit v1.2.3