blob: d64adba668ac366452b43def1a22c6cf7e57fae2 (
plain) (
tree)
|
|
/*
* @file rtems/internal.h
*
* @defgroup libmisc_internal Internal Stack Checker Information
*
* @ingroup libmisc
* @brief Stack Checker Internal Information
*
* This include file contains internal information
* for the RTEMS stack checker.
*/
/*
* 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.org/license/LICENSE.
*/
#ifndef __INTERNAL_STACK_CHECK_h
#define __INTERNAL_STACK_CHECK_h
#ifdef __cplusplus
extern "C" {
#endif
/*
* This structure is used to fill in and compare the "end of stack"
* marker pattern.
* pattern area must be a multiple of 4 words.
*/
#ifdef CPU_STACK_CHECK_SIZE
#define PATTERN_SIZE_WORDS (((CPU_STACK_CHECK_SIZE / 4) + 3) & ~0x3)
#else
#define PATTERN_SIZE_WORDS (4)
#endif
#define PATTERN_SIZE_BYTES (PATTERN_SIZE_WORDS * sizeof(uint32_t))
typedef struct {
uint32_t pattern[ PATTERN_SIZE_WORDS ];
} Stack_check_Control;
/*
* The pattern used to fill the entire stack.
*/
#define BYTE_PATTERN 0xA5
#define U32_PATTERN 0xA5A5A5A5
/*
* rtems_stack_checker_create_extension
*/
bool rtems_stack_checker_create_extension(
Thread_Control *running,
Thread_Control *the_thread
);
/*
* rtems_stack_checker_begin_extension
*/
void rtems_stack_checker_begin_extension(
Thread_Control *the_thread
);
/*
* rtems_stack_checker_switch_extension
*/
void rtems_stack_checker_switch_extension(
Thread_Control *running,
Thread_Control *heir
);
/*
* rtems_stack_checker_fatal_extension
*/
void rtems_stack_checker_fatal_extension(
Internal_errors_Source source,
bool is_internal,
uint32_t status
);
/*
* rtems_stack_checker_report_usage
*/
void rtems_stack_checker_report_usage( void );
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */
|