summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2012-11-14 15:10:46 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2012-11-15 15:33:13 +0100
commita12f7e98f17cd4b710459b3763780c3f1cbcd8a7 (patch)
treee1f434ef61565dadf8048e496cb8983d45b9a2ef
parenta0c7aa555562ec4248882e808abe91996f248cc2 (diff)
downloadrtems-a12f7e98f17cd4b710459b3763780c3f1cbcd8a7.tar.bz2
score: Add RTEMS_FATAL_SOURCE_STACK_CHECKER
-rw-r--r--cpukit/libmisc/stackchk/check.c5
-rw-r--r--cpukit/score/include/rtems/score/interr.h7
-rw-r--r--testsuites/libtests/stackchk/init.c7
3 files changed, 13 insertions, 6 deletions
diff --git a/cpukit/libmisc/stackchk/check.c b/cpukit/libmisc/stackchk/check.c
index 69120a490e..c14b52c780 100644
--- a/cpukit/libmisc/stackchk/check.c
+++ b/cpukit/libmisc/stackchk/check.c
@@ -260,7 +260,10 @@ void Stack_check_report_blown_task(Thread_Control *running, bool pattern_ok)
}
#endif
- rtems_fatal_error_occurred(0x81);
+ rtems_fatal(
+ RTEMS_FATAL_SOURCE_STACK_CHECKER,
+ running->Object.name.name_u32
+ );
}
/*
diff --git a/cpukit/score/include/rtems/score/interr.h b/cpukit/score/include/rtems/score/interr.h
index 20efcb3e0b..94306b59a5 100644
--- a/cpukit/score/include/rtems/score/interr.h
+++ b/cpukit/score/include/rtems/score/interr.h
@@ -91,6 +91,13 @@ typedef enum {
RTEMS_FATAL_SOURCE_ASSERT,
/**
+ * @brief Fatal source of the stack checker.
+ *
+ * The fatal code is the object name of the executing task.
+ */
+ RTEMS_FATAL_SOURCE_STACK_CHECKER,
+
+ /**
* @brief The last available fatal source.
*
* This enum value ensures that the enum type needs at least 32-bits for
diff --git a/testsuites/libtests/stackchk/init.c b/testsuites/libtests/stackchk/init.c
index a545812209..1551eecb37 100644
--- a/testsuites/libtests/stackchk/init.c
+++ b/testsuites/libtests/stackchk/init.c
@@ -88,16 +88,13 @@ rtems_task Init(
void Fatal_extension( uint32_t source, bool is_internal, uint32_t error )
{
- if ( source != INTERNAL_ERROR_RTEMS_API ) {
+ if ( source != RTEMS_FATAL_SOURCE_STACK_CHECKER ) {
printk( "unexpected fatal source\n" );
} else if ( is_internal ) {
printk( "unexpected fatal is internal\n" );
- } else if ( error != 0x81 ) {
+ } else if ( error != rtems_build_name( 'T', 'A', '1', ' ' ) ) {
printk( "unexpected fatal error\n" );
} else {
printk( "*** END OF TEST STACK CHECKER ***\n" );
}
-
- if ( _System_state_Is_up( _System_state_Get() ) )
- _Thread_Stop_multitasking();
}