summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJennifer Averett <Jennifer.Averett@OARcorp.com>2008-01-28 19:19:35 +0000
committerJennifer Averett <Jennifer.Averett@OARcorp.com>2008-01-28 19:19:35 +0000
commit5fdb1e7bc0319ce06b4e427f01e8d95beeab09ad (patch)
tree738799d79979c4b374a2ec5b44a43c39b4003a83
parent2008-01-28 Joel Sherrill <joel.sherrill@OARcorp.com> (diff)
downloadrtems-5fdb1e7bc0319ce06b4e427f01e8d95beeab09ad.tar.bz2
2008-01-28 Jennifer Averett <jennifer.averett@OARcorp.com>
* Makefile.am, configure.ac: Added fatal error tests * spfatal01/Makefile.am, spfatal01/spfatal01.scn, spfatal01/testcase.h, spfatal02/Makefile.am, spfatal02/spfatal02.scn, spfatal02/testcase.h, spfatal03/Makefile.am, spfatal03/spfatal03.scn, spfatal03/testcase.h, spfatal04/Makefile.am, spfatal04/spfatal04.scn, spfatal04/testcase.h, spfatal05/Makefile.am, spfatal05/spfatal05.scn, spfatal05/testcase.h, spfatal06/Makefile.am, spfatal06/spfatal06.scn, spfatal06/testcase.h, spfatal07/Makefile.am, spfatal07/spfatal07.scn, spfatal07/testcase.h, spfatal08/Makefile.am, spfatal08/spfatal08.scn, spfatal08/testcase.h, spfatal09/Makefile.am, spfatal09/spfatal09.scn, spfatal09/testcase.h, spfatal10/Makefile.am, spfatal10/spfatal10.scn, spfatal10/testcase.h, spfatal_support/init.c, spfatal_support/system.h: New files.
-rw-r--r--testsuites/sptests/ChangeLog15
-rw-r--r--testsuites/sptests/Makefile.am8
-rw-r--r--testsuites/sptests/configure.ac10
-rw-r--r--testsuites/sptests/spfatal01/Makefile.am27
-rw-r--r--testsuites/sptests/spfatal01/spfatal01.scn1
-rw-r--r--testsuites/sptests/spfatal01/testcase.h42
-rw-r--r--testsuites/sptests/spfatal02/Makefile.am27
-rw-r--r--testsuites/sptests/spfatal02/spfatal02.scn1
-rw-r--r--testsuites/sptests/spfatal02/testcase.h39
-rw-r--r--testsuites/sptests/spfatal03/Makefile.am26
-rw-r--r--testsuites/sptests/spfatal03/spfatal03.scn2
-rw-r--r--testsuites/sptests/spfatal03/testcase.h67
-rw-r--r--testsuites/sptests/spfatal04/Makefile.am27
-rw-r--r--testsuites/sptests/spfatal04/spfatal04.scn1
-rw-r--r--testsuites/sptests/spfatal04/testcase.h36
-rw-r--r--testsuites/sptests/spfatal05/Makefile.am27
-rw-r--r--testsuites/sptests/spfatal05/spfatal05.scn1
-rw-r--r--testsuites/sptests/spfatal05/testcase.h62
-rw-r--r--testsuites/sptests/spfatal06/Makefile.am27
-rw-r--r--testsuites/sptests/spfatal06/spfatal06.scn1
-rw-r--r--testsuites/sptests/spfatal06/testcase.h50
-rw-r--r--testsuites/sptests/spfatal07/Makefile.am27
-rw-r--r--testsuites/sptests/spfatal07/spfatal07.scn1
-rw-r--r--testsuites/sptests/spfatal07/testcase.h41
-rw-r--r--testsuites/sptests/spfatal08/Makefile.am27
-rw-r--r--testsuites/sptests/spfatal08/spfatal08.scn1
-rw-r--r--testsuites/sptests/spfatal08/testcase.h44
-rw-r--r--testsuites/sptests/spfatal09/Makefile.am27
-rw-r--r--testsuites/sptests/spfatal09/spfatal09.scn1
-rw-r--r--testsuites/sptests/spfatal09/testcase.h41
-rw-r--r--testsuites/sptests/spfatal10/Makefile.am27
-rw-r--r--testsuites/sptests/spfatal10/spfatal10.scn1
-rw-r--r--testsuites/sptests/spfatal10/testcase.h36
-rw-r--r--testsuites/sptests/spfatal_support/init.c154
-rw-r--r--testsuites/sptests/spfatal_support/system.h72
35 files changed, 995 insertions, 2 deletions
diff --git a/testsuites/sptests/ChangeLog b/testsuites/sptests/ChangeLog
index b7ecea8a4a..37e74fd3bb 100644
--- a/testsuites/sptests/ChangeLog
+++ b/testsuites/sptests/ChangeLog
@@ -1,3 +1,18 @@
+2008-01-28 Jennifer Averett <jennifer.averett@OARcorp.com>
+
+ * Makefile.am, configure.ac: Added fatal error tests
+ * spfatal01/Makefile.am, spfatal01/spfatal01.scn, spfatal01/testcase.h,
+ spfatal02/Makefile.am, spfatal02/spfatal02.scn, spfatal02/testcase.h,
+ spfatal03/Makefile.am, spfatal03/spfatal03.scn, spfatal03/testcase.h,
+ spfatal04/Makefile.am, spfatal04/spfatal04.scn, spfatal04/testcase.h,
+ spfatal05/Makefile.am, spfatal05/spfatal05.scn, spfatal05/testcase.h,
+ spfatal06/Makefile.am, spfatal06/spfatal06.scn, spfatal06/testcase.h,
+ spfatal07/Makefile.am, spfatal07/spfatal07.scn, spfatal07/testcase.h,
+ spfatal08/Makefile.am, spfatal08/spfatal08.scn, spfatal08/testcase.h,
+ spfatal09/Makefile.am, spfatal09/spfatal09.scn, spfatal09/testcase.h,
+ spfatal10/Makefile.am, spfatal10/spfatal10.scn, spfatal10/testcase.h,
+ spfatal_support/init.c, spfatal_support/system.h: New files.
+
2008-01-24 Joel Sherrill <joel.sherrill@oarcorp.com>
* sp28/init.c, sp28/sp28.scn, sp29/init.c, sp29/sp29.scn, sp32/init.c,
diff --git a/testsuites/sptests/Makefile.am b/testsuites/sptests/Makefile.am
index 90ccb30fc8..2d6af32dea 100644
--- a/testsuites/sptests/Makefile.am
+++ b/testsuites/sptests/Makefile.am
@@ -7,8 +7,12 @@ ACLOCAL_AMFLAGS = -I ../aclocal
## spfatal is not included for now
SUBDIRS = sp01 sp02 sp03 sp04 sp05 sp06 sp07 sp08 sp09 sp11 sp12 sp13 sp14 \
sp15 sp16 sp17 sp19 sp20 sp21 sp22 sp23 sp24 sp25 sp26 sp27 sp28 sp29 \
- sp30 sp31 sp32 sp33 sp34 sp35 sp37 sp38 sp39 sp40 sp41 sp42 spsize
-DIST_SUBDIRS = $(SUBDIRS) spfatal
+ sp30 sp31 sp32 sp33 sp34 sp35 sp37 sp38 sp39 sp40 sp41 sp42 spsize \
+ spfatal01 spfatal02 spfatal03 spfatal04 spfatal05 spfatal06 spfatal07 \
+ spfatal08 spfatal09 spfatal10
+
+DIST_SUBDIRS = $(SUBDIRS) spfatal spfatal_support
+EXTRA_DIST = spfatal_support/init.c spfatal_support/system.h
include $(top_srcdir)/../automake/subdirs.am
include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/sptests/configure.ac b/testsuites/sptests/configure.ac
index 00d882a85d..e80bccbf82 100644
--- a/testsuites/sptests/configure.ac
+++ b/testsuites/sptests/configure.ac
@@ -69,5 +69,15 @@ sp41/Makefile
sp42/Makefile
spsize/Makefile
spfatal/Makefile
+spfatal01/Makefile
+spfatal02/Makefile
+spfatal03/Makefile
+spfatal04/Makefile
+spfatal05/Makefile
+spfatal06/Makefile
+spfatal07/Makefile
+spfatal08/Makefile
+spfatal09/Makefile
+spfatal10/Makefile
])
AC_OUTPUT
diff --git a/testsuites/sptests/spfatal01/Makefile.am b/testsuites/sptests/spfatal01/Makefile.am
new file mode 100644
index 0000000000..fca4a4cdb2
--- /dev/null
+++ b/testsuites/sptests/spfatal01/Makefile.am
@@ -0,0 +1,27 @@
+##
+## $Id$
+##
+
+MANAGERS = all
+
+rtems_tests_PROGRAMS = spfatal01.exe
+spfatal01_exe_SOURCES = ../spfatal_support/init.c ../spfatal_support/system.h testcase.h
+
+dist_rtems_tests_DATA = spfatal01.scn
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+spfatal01_exe_LDADD = $(MANAGERS_NOT_WANTED:%=$(PROJECT_LIB)/no-%.rel)
+
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+
+LINK_OBJS = $(spfatal01_exe_OBJECTS) $(spfatal01_exe_LDADD)
+LINK_LIBS = $(spfatal01_exe_LDLIBS)
+
+spfatal01.exe$(EXEEXT): $(spfatal01_exe_OBJECTS) $(spfatal01_exe_DEPENDENCIES)
+ @rm -f spfatal01.exe$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/sptests/spfatal01/spfatal01.scn b/testsuites/sptests/spfatal01/spfatal01.scn
new file mode 100644
index 0000000000..945a43215b
--- /dev/null
+++ b/testsuites/sptests/spfatal01/spfatal01.scn
@@ -0,0 +1 @@
+Fatal error (Classic API Init task create failure) hit
diff --git a/testsuites/sptests/spfatal01/testcase.h b/testsuites/sptests/spfatal01/testcase.h
new file mode 100644
index 0000000000..28fc5584d4
--- /dev/null
+++ b/testsuites/sptests/spfatal01/testcase.h
@@ -0,0 +1,42 @@
+/*
+ * Classic API Init task create failure
+ *
+ * $Id$
+ */
+
+/*
+ * Way too much stack space. Should generate a fatal error
+ * on the init task create.
+ */
+#define CONFIGURE_HAS_OWN_INIT_TASK_TABLE
+#define CONFIGURE_INIT_TASK_STACK_SIZE 0
+rtems_initialization_tasks_table Initialization_tasks[] = {
+ { rtems_build_name('I', 'N', 'I', ' '),
+ 64 * 1024 * 1024,
+ 1,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ Init,
+ RTEMS_DEFAULT_MODES,
+ 0
+ }
+};
+#define CONFIGURE_INIT_TASK_TABLE Initialization_tasks
+#define CONFIGURE_INIT_TASK_TABLE_SIZE \
+ sizeof(CONFIGURE_INIT_TASK_TABLE) / sizeof(rtems_initialization_tasks_table)
+
+#define FATAL_ERROR_DESCRIPTION "Classic API Init task create failure"
+#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_RTEMS_API
+#define FATAL_ERROR_EXPECTED_IS_INTERNAL TRUE
+#define FATAL_ERROR_EXPECTED_ERROR RTEMS_UNSATISFIED
+
+void force_error()
+{
+/*
+ * Case 2: Null entry
+ * Case 3: semaphore_create
+ * _Thread_Disable_dispatch
+ * semaphore_obtain
+ */
+
+ /* we will not run this far */
+}
diff --git a/testsuites/sptests/spfatal02/Makefile.am b/testsuites/sptests/spfatal02/Makefile.am
new file mode 100644
index 0000000000..e4bb6d9cee
--- /dev/null
+++ b/testsuites/sptests/spfatal02/Makefile.am
@@ -0,0 +1,27 @@
+##
+## $Id$
+##
+
+MANAGERS = all
+
+rtems_tests_PROGRAMS = spfatal02.exe
+spfatal02_exe_SOURCES = ../spfatal_support/init.c ../spfatal_support/system.h testcase.h
+
+dist_rtems_tests_DATA = spfatal02.scn
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+spfatal02_exe_LDADD = $(MANAGERS_NOT_WANTED:%=$(PROJECT_LIB)/no-%.rel)
+
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+
+LINK_OBJS = $(spfatal02_exe_OBJECTS) $(spfatal02_exe_LDADD)
+LINK_LIBS = $(spfatal02_exe_LDLIBS)
+
+spfatal02.exe$(EXEEXT): $(spfatal02_exe_OBJECTS) $(spfatal02_exe_DEPENDENCIES)
+ @rm -f spfatal02.exe$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/sptests/spfatal02/spfatal02.scn b/testsuites/sptests/spfatal02/spfatal02.scn
new file mode 100644
index 0000000000..807845b503
--- /dev/null
+++ b/testsuites/sptests/spfatal02/spfatal02.scn
@@ -0,0 +1 @@
+Fatal error (Classic API Init task start failure) hit
diff --git a/testsuites/sptests/spfatal02/testcase.h b/testsuites/sptests/spfatal02/testcase.h
new file mode 100644
index 0000000000..81a17499cd
--- /dev/null
+++ b/testsuites/sptests/spfatal02/testcase.h
@@ -0,0 +1,39 @@
+/*
+ * Classic API Init task create failure
+ *
+ * $Id$
+ */
+
+/*
+ * Way too much stack space. Should generate a fatal error
+ * on the init task create.
+ */
+#define CONFIGURE_HAS_OWN_INIT_TASK_TABLE
+#define CONFIGURE_INIT_TASK_STACK_SIZE RTEMS_MINIMUM_STACK_SIZE
+rtems_initialization_tasks_table Initialization_tasks[] = {
+ { rtems_build_name('I', 'N', 'I', ' '),
+ RTEMS_MINIMUM_STACK_SIZE,
+ 1,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ NULL,
+ RTEMS_DEFAULT_MODES,
+ 0
+ }
+};
+#define CONFIGURE_INIT_TASK_TABLE Initialization_tasks
+#define CONFIGURE_INIT_TASK_TABLE_SIZE \
+ sizeof(CONFIGURE_INIT_TASK_TABLE) / sizeof(rtems_initialization_tasks_table)
+
+#define FATAL_ERROR_DESCRIPTION "Classic API Init task start failure"
+#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_RTEMS_API
+#define FATAL_ERROR_EXPECTED_IS_INTERNAL TRUE
+#define FATAL_ERROR_EXPECTED_ERROR RTEMS_INVALID_ADDRESS
+
+void force_error()
+{
+/*
+ * Case 2: Null entry
+ */
+
+ /* we will not run this far */
+}
diff --git a/testsuites/sptests/spfatal03/Makefile.am b/testsuites/sptests/spfatal03/Makefile.am
new file mode 100644
index 0000000000..e901208f14
--- /dev/null
+++ b/testsuites/sptests/spfatal03/Makefile.am
@@ -0,0 +1,26 @@
+##
+## $Id$
+##
+
+MANAGERS = all
+
+rtems_tests_PROGRAMS = spfatal03.exe
+spfatal03_exe_SOURCES = ../spfatal_support/init.c ../spfatal_support/system.h testcase.h
+dist_rtems_tests_DATA = spfatal03.scn
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+spfatal03_exe_LDADD = $(MANAGERS_NOT_WANTED:%=$(PROJECT_LIB)/no-%.rel)
+
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+
+LINK_OBJS = $(spfatal03_exe_OBJECTS) $(spfatal03_exe_LDADD)
+LINK_LIBS = $(spfatal03_exe_LDLIBS)
+
+spfatal03.exe$(EXEEXT): $(spfatal03_exe_OBJECTS) $(spfatal03_exe_DEPENDENCIES)
+ @rm -f spfatal03.exe$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/sptests/spfatal03/spfatal03.scn b/testsuites/sptests/spfatal03/spfatal03.scn
new file mode 100644
index 0000000000..af4ee9a631
--- /dev/null
+++ b/testsuites/sptests/spfatal03/spfatal03.scn
@@ -0,0 +1,2 @@
+Create S0
+Fatal error (Core Mutex obtain in critical section) hit
diff --git a/testsuites/sptests/spfatal03/testcase.h b/testsuites/sptests/spfatal03/testcase.h
new file mode 100644
index 0000000000..0c72212863
--- /dev/null
+++ b/testsuites/sptests/spfatal03/testcase.h
@@ -0,0 +1,67 @@
+/*
+ * Classic API Init task create failure
+ *
+ * $Id$
+ */
+
+/*
+ * Way too much stack space. Should generate a fatal error
+ * on the init task create.
+ */
+#define CONFIGURE_HAS_OWN_INIT_TASK_TABLE
+#define CONFIGURE_INIT_TASK_STACK_SIZE RTEMS_MINIMUM_STACK_SIZE
+rtems_initialization_tasks_table Initialization_tasks[] = {
+ { rtems_build_name('I', 'N', 'I', ' '),
+ RTEMS_MINIMUM_STACK_SIZE,
+ 1,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ Init,
+ RTEMS_DEFAULT_MODES,
+ 0
+ }
+};
+#define CONFIGURE_INIT_TASK_TABLE Initialization_tasks
+#define CONFIGURE_INIT_TASK_TABLE_SIZE \
+ sizeof(CONFIGURE_INIT_TASK_TABLE) / sizeof(rtems_initialization_tasks_table)
+
+#define CONFIGURE_MAXIMUM_SEMAPHORES 10
+
+#define FATAL_ERROR_DESCRIPTION "Core Mutex obtain in critical section"
+#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE
+#define FATAL_ERROR_EXPECTED_IS_INTERNAL FALSE
+#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_MUTEX_OBTAIN_FROM_BAD_STATE
+
+rtems_id Mutex_id[1];
+rtems_name Mutex_name[1];
+
+void force_error()
+{
+ ISR_Level level;
+ rtems_status_code status;
+
+
+ Mutex_name[0] = rtems_build_name( 'S','0',' ',' ');
+ status = rtems_semaphore_create(
+ Mutex_name[0],
+ 1,
+ RTEMS_LOCAL|
+ RTEMS_SIMPLE_BINARY_SEMAPHORE|
+ RTEMS_PRIORITY_CEILING |
+ RTEMS_PRIORITY,
+ 0,
+ &Mutex_id[0]
+ );
+ directive_failed( status, "rtems_semaphore_create of S0");
+ printf("Create S0\n");
+
+
+ _Thread_Disable_dispatch();
+ status = rtems_semaphore_obtain( Mutex_id[0], RTEMS_DEFAULT_OPTIONS, 0 );
+ /* !!! SHOULD NOT RETURN FROM THE ABOVE CALL */
+
+ _Thread_Enable_dispatch();
+ _ISR_Enable( level );
+ directive_failed( status, "rtems_semaphore_obtain" );
+
+ /* we will not run this far */
+}
diff --git a/testsuites/sptests/spfatal04/Makefile.am b/testsuites/sptests/spfatal04/Makefile.am
new file mode 100644
index 0000000000..6f1bf8d73a
--- /dev/null
+++ b/testsuites/sptests/spfatal04/Makefile.am
@@ -0,0 +1,27 @@
+##
+## $Id$
+##
+
+MANAGERS = all
+
+rtems_tests_PROGRAMS = spfatal04.exe
+spfatal04_exe_SOURCES = ../spfatal_support/init.c ../spfatal_support/system.h testcase.h
+
+dist_rtems_tests_DATA = spfatal04.scn
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+spfatal04_exe_LDADD = $(MANAGERS_NOT_WANTED:%=$(PROJECT_LIB)/no-%.rel)
+
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+
+LINK_OBJS = $(spfatal04_exe_OBJECTS) $(spfatal04_exe_LDADD)
+LINK_LIBS = $(spfatal04_exe_LDLIBS)
+
+spfatal04.exe$(EXEEXT): $(spfatal04_exe_OBJECTS) $(spfatal04_exe_DEPENDENCIES)
+ @rm -f spfatal04.exe$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/sptests/spfatal04/spfatal04.scn b/testsuites/sptests/spfatal04/spfatal04.scn
new file mode 100644
index 0000000000..680fcfeb55
--- /dev/null
+++ b/testsuites/sptests/spfatal04/spfatal04.scn
@@ -0,0 +1 @@
+Fatal error (Classic API call rtems_fatal_error_occurred) hit
diff --git a/testsuites/sptests/spfatal04/testcase.h b/testsuites/sptests/spfatal04/testcase.h
new file mode 100644
index 0000000000..960e68e2d2
--- /dev/null
+++ b/testsuites/sptests/spfatal04/testcase.h
@@ -0,0 +1,36 @@
+/*
+ * Classic API Init task create failure
+ *
+ * $Id$
+ */
+
+/*
+ * Way too much stack space. Should generate a fatal error
+ * on the init task create.
+ */
+#define CONFIGURE_HAS_OWN_INIT_TASK_TABLE
+#define CONFIGURE_INIT_TASK_STACK_SIZE RTEMS_MINIMUM_STACK_SIZE
+rtems_initialization_tasks_table Initialization_tasks[] = {
+ { rtems_build_name('I', 'N', 'I', ' '),
+ RTEMS_MINIMUM_STACK_SIZE,
+ 1,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ Init,
+ RTEMS_DEFAULT_MODES,
+ 0
+ }
+};
+#define CONFIGURE_INIT_TASK_TABLE Initialization_tasks
+#define CONFIGURE_INIT_TASK_TABLE_SIZE \
+ sizeof(CONFIGURE_INIT_TASK_TABLE) / sizeof(rtems_initialization_tasks_table)
+
+#define FATAL_ERROR_DESCRIPTION "Classic API call rtems_fatal_error_occurred"
+#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_RTEMS_API
+#define FATAL_ERROR_EXPECTED_IS_INTERNAL FALSE
+#define FATAL_ERROR_EXPECTED_ERROR 0xdead
+
+void force_error()
+{
+ rtems_fatal_error_occurred( 0xdead );
+ /* we will not run this far */
+}
diff --git a/testsuites/sptests/spfatal05/Makefile.am b/testsuites/sptests/spfatal05/Makefile.am
new file mode 100644
index 0000000000..6495aa9fbd
--- /dev/null
+++ b/testsuites/sptests/spfatal05/Makefile.am
@@ -0,0 +1,27 @@
+##
+## $Id$
+##
+
+MANAGERS = all
+
+rtems_tests_PROGRAMS = spfatal05.exe
+spfatal05_exe_SOURCES = ../spfatal_support/init.c ../spfatal_support/system.h testcase.h
+
+dist_rtems_tests_DATA = spfatal05.scn
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+spfatal05_exe_LDADD = $(MANAGERS_NOT_WANTED:%=$(PROJECT_LIB)/no-%.rel)
+
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+
+LINK_OBJS = $(spfatal05_exe_OBJECTS) $(spfatal05_exe_LDADD)
+LINK_LIBS = $(spfatal05_exe_LDLIBS)
+
+spfatal05.exe$(EXEEXT): $(spfatal05_exe_OBJECTS) $(spfatal05_exe_DEPENDENCIES)
+ @rm -f spfatal05.exe$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/sptests/spfatal05/spfatal05.scn b/testsuites/sptests/spfatal05/spfatal05.scn
new file mode 100644
index 0000000000..c37c779a86
--- /dev/null
+++ b/testsuites/sptests/spfatal05/spfatal05.scn
@@ -0,0 +1 @@
+Fatal error (Core fall out of a task) hit
diff --git a/testsuites/sptests/spfatal05/testcase.h b/testsuites/sptests/spfatal05/testcase.h
new file mode 100644
index 0000000000..b7a33027aa
--- /dev/null
+++ b/testsuites/sptests/spfatal05/testcase.h
@@ -0,0 +1,62 @@
+/*
+ * Classic API Init task create failure
+ *
+ * $Id$
+ */
+
+/*
+ * Way too much stack space. Should generate a fatal error
+ * on the init task create.
+ */
+#define CONFIGURE_HAS_OWN_INIT_TASK_TABLE
+#define CONFIGURE_INIT_TASK_STACK_SIZE RTEMS_MINIMUM_STACK_SIZE
+rtems_initialization_tasks_table Initialization_tasks[] = {
+ { rtems_build_name('I', 'N', 'I', ' '),
+ RTEMS_MINIMUM_STACK_SIZE,
+ 1,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ Init,
+ RTEMS_DEFAULT_MODES,
+ 0
+ }
+};
+#define CONFIGURE_INIT_TASK_TABLE Initialization_tasks
+#define CONFIGURE_INIT_TASK_TABLE_SIZE \
+ sizeof(CONFIGURE_INIT_TASK_TABLE) / sizeof(rtems_initialization_tasks_table)
+
+#define SPFATAL_TEST_CASE_EXTRA_TASKS 1
+
+#define FATAL_ERROR_DESCRIPTION "Core fall out of a task"
+#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE
+#define FATAL_ERROR_EXPECTED_IS_INTERNAL TRUE
+#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_THREAD_EXITTED
+
+rtems_task EmptyTask(
+ rtems_task_argument unused
+)
+{
+}
+
+void force_error()
+{
+ rtems_id id;
+ rtems_status_code status;
+
+ status = rtems_task_create(
+ rtems_build_name('T','A','0','1' ),
+ 4,
+ RTEMS_MINIMUM_STACK_SIZE,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ directive_failed( status, "rtems_task_create" );
+
+ status = rtems_task_start( id, EmptyTask, 0 );
+ directive_failed( status, "rtems_task_start" );
+
+ status = rtems_task_wake_after( 10 );
+ directive_failed( status, "rtems_task_wake_after" );
+
+ /* we will not run this far */
+}
diff --git a/testsuites/sptests/spfatal06/Makefile.am b/testsuites/sptests/spfatal06/Makefile.am
new file mode 100644
index 0000000000..5ba835b3c5
--- /dev/null
+++ b/testsuites/sptests/spfatal06/Makefile.am
@@ -0,0 +1,27 @@
+##
+## $Id$
+##
+
+MANAGERS = all
+
+rtems_tests_PROGRAMS = spfatal06.exe
+spfatal06_exe_SOURCES = ../spfatal_support/init.c ../spfatal_support/system.h testcase.h
+
+dist_rtems_tests_DATA = spfatal06.scn
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+spfatal06_exe_LDADD = $(MANAGERS_NOT_WANTED:%=$(PROJECT_LIB)/no-%.rel)
+
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+
+LINK_OBJS = $(spfatal06_exe_OBJECTS) $(spfatal06_exe_LDADD)
+LINK_LIBS = $(spfatal06_exe_LDLIBS)
+
+spfatal06.exe$(EXEEXT): $(spfatal06_exe_OBJECTS) $(spfatal06_exe_DEPENDENCIES)
+ @rm -f spfatal06.exe$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/sptests/spfatal06/spfatal06.scn b/testsuites/sptests/spfatal06/spfatal06.scn
new file mode 100644
index 0000000000..31c65088b7
--- /dev/null
+++ b/testsuites/sptests/spfatal06/spfatal06.scn
@@ -0,0 +1 @@
+Fatal error (Core initialize with invalid stack hook) hit
diff --git a/testsuites/sptests/spfatal06/testcase.h b/testsuites/sptests/spfatal06/testcase.h
new file mode 100644
index 0000000000..d10179b7b7
--- /dev/null
+++ b/testsuites/sptests/spfatal06/testcase.h
@@ -0,0 +1,50 @@
+/*
+ * Classic API Init task create failure
+ *
+ * $Id$
+ */
+
+/*
+ * Way too much stack space. Should generate a fatal error
+ * on the init task create.
+ */
+#define CONFIGURE_HAS_OWN_INIT_TASK_TABLE
+#define CONFIGURE_INIT_TASK_STACK_SIZE RTEMS_MINIMUM_STACK_SIZE
+rtems_initialization_tasks_table Initialization_tasks[] = {
+ { rtems_build_name('I', 'N', 'I', ' '),
+ RTEMS_MINIMUM_STACK_SIZE,
+ 1,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ Init,
+ RTEMS_DEFAULT_MODES,
+ 0
+ }
+};
+#define CONFIGURE_INIT_TASK_TABLE Initialization_tasks
+#define CONFIGURE_INIT_TASK_TABLE_SIZE \
+ sizeof(CONFIGURE_INIT_TASK_TABLE) / sizeof(rtems_initialization_tasks_table)
+
+#define FATAL_ERROR_DESCRIPTION "Core initialize with invalid stack hook"
+#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE
+#define FATAL_ERROR_EXPECTED_IS_INTERNAL TRUE
+#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_BAD_STACK_HOOK
+
+void *New_stack_allocate_hook( uint32_t unused)
+{
+}
+
+void force_error()
+{
+ rtems_configuration_table New_Configuration;
+
+ New_Configuration = *_Configuration_Table;
+
+ if (_Configuration_Table->stack_free_hook != NULL)
+ New_Configuration.stack_allocate_hook = NULL;
+ else
+ New_Configuration.stack_allocate_hook = &New_stack_allocate_hook;
+
+ rtems_initialize_executive_early( &New_Configuration );
+ /* we will not run this far */
+}
+
diff --git a/testsuites/sptests/spfatal07/Makefile.am b/testsuites/sptests/spfatal07/Makefile.am
new file mode 100644
index 0000000000..e1fc6e130c
--- /dev/null
+++ b/testsuites/sptests/spfatal07/Makefile.am
@@ -0,0 +1,27 @@
+##
+## $Id$
+##
+
+MANAGERS = all
+
+rtems_tests_PROGRAMS = spfatal07.exe
+spfatal07_exe_SOURCES = ../spfatal_support/init.c ../spfatal_support/system.h testcase.h
+
+dist_rtems_tests_DATA = spfatal07.scn
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+spfatal07_exe_LDADD = $(MANAGERS_NOT_WANTED:%=$(PROJECT_LIB)/no-%.rel)
+
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+
+LINK_OBJS = $(spfatal07_exe_OBJECTS) $(spfatal07_exe_LDADD)
+LINK_LIBS = $(spfatal07_exe_LDLIBS)
+
+spfatal07.exe$(EXEEXT): $(spfatal07_exe_OBJECTS) $(spfatal07_exe_DEPENDENCIES)
+ @rm -f spfatal07.exe$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/sptests/spfatal07/spfatal07.scn b/testsuites/sptests/spfatal07/spfatal07.scn
new file mode 100644
index 0000000000..a91802eaf7
--- /dev/null
+++ b/testsuites/sptests/spfatal07/spfatal07.scn
@@ -0,0 +1 @@
+Fatal error (Core Configuration Invalid ISR stack size) hit
diff --git a/testsuites/sptests/spfatal07/testcase.h b/testsuites/sptests/spfatal07/testcase.h
new file mode 100644
index 0000000000..5e2904db97
--- /dev/null
+++ b/testsuites/sptests/spfatal07/testcase.h
@@ -0,0 +1,41 @@
+/*
+ * Classic API Init task create failure
+ *
+ * $Id$
+ */
+
+/*
+ * Way too much stack space. Should generate a fatal error
+ * on the init task create.
+ */
+#define CONFIGURE_HAS_OWN_INIT_TASK_TABLE
+#define CONFIGURE_INIT_TASK_STACK_SIZE RTEMS_MINIMUM_STACK_SIZE
+rtems_initialization_tasks_table Initialization_tasks[] = {
+ { rtems_build_name('I', 'N', 'I', ' '),
+ RTEMS_MINIMUM_STACK_SIZE,
+ 1,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ Init,
+ RTEMS_DEFAULT_MODES,
+ 0
+ }
+};
+#define CONFIGURE_INIT_TASK_TABLE Initialization_tasks
+#define CONFIGURE_INIT_TASK_TABLE_SIZE \
+ sizeof(CONFIGURE_INIT_TASK_TABLE) / sizeof(rtems_initialization_tasks_table)
+
+#define FATAL_ERROR_DESCRIPTION "Core Configuration Invalid ISR stack size"
+#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE
+#define FATAL_ERROR_EXPECTED_IS_INTERNAL TRUE
+#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_INTERRUPT_STACK_TOO_SMALL
+
+void force_error()
+{
+ rtems_configuration_table New_Configuration;
+ New_Configuration = *_Configuration_Table;
+
+ New_Configuration.interrupt_stack_size = (STACK_MINIMUM_SIZE-1);
+ rtems_initialize_executive_early( &New_Configuration );
+
+ /* we will not run this far */
+}
diff --git a/testsuites/sptests/spfatal08/Makefile.am b/testsuites/sptests/spfatal08/Makefile.am
new file mode 100644
index 0000000000..eccdb31b5c
--- /dev/null
+++ b/testsuites/sptests/spfatal08/Makefile.am
@@ -0,0 +1,27 @@
+##
+## $Id$
+##
+
+MANAGERS = all
+
+rtems_tests_PROGRAMS = spfatal08.exe
+spfatal08_exe_SOURCES = ../spfatal_support/init.c ../spfatal_support/system.h testcase.h
+
+dist_rtems_tests_DATA = spfatal08.scn
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+spfatal08_exe_LDADD = $(MANAGERS_NOT_WANTED:%=$(PROJECT_LIB)/no-%.rel)
+
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+
+LINK_OBJS = $(spfatal08_exe_OBJECTS) $(spfatal08_exe_LDADD)
+LINK_LIBS = $(spfatal08_exe_LDLIBS)
+
+spfatal08.exe$(EXEEXT): $(spfatal08_exe_OBJECTS) $(spfatal08_exe_DEPENDENCIES)
+ @rm -f spfatal08.exe$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/sptests/spfatal08/spfatal08.scn b/testsuites/sptests/spfatal08/spfatal08.scn
new file mode 100644
index 0000000000..af9082b11b
--- /dev/null
+++ b/testsuites/sptests/spfatal08/spfatal08.scn
@@ -0,0 +1 @@
+Fatal error (Core workspace too small) hit
diff --git a/testsuites/sptests/spfatal08/testcase.h b/testsuites/sptests/spfatal08/testcase.h
new file mode 100644
index 0000000000..46f88525a8
--- /dev/null
+++ b/testsuites/sptests/spfatal08/testcase.h
@@ -0,0 +1,44 @@
+/*
+ * Classic API Init task create failure
+ *
+ * $Id$
+ */
+
+/*
+ * Way too much stack space. Should generate a fatal error
+ * on the init task create.
+ */
+#define CONFIGURE_HAS_OWN_INIT_TASK_TABLE
+#define CONFIGURE_INIT_TASK_STACK_SIZE RTEMS_MINIMUM_STACK_SIZE
+rtems_initialization_tasks_table Initialization_tasks[] = {
+ { rtems_build_name('I', 'N', 'I', ' '),
+ RTEMS_MINIMUM_STACK_SIZE,
+ 1,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ Init,
+ RTEMS_DEFAULT_MODES,
+ 0
+ }
+};
+#define CONFIGURE_INIT_TASK_TABLE Initialization_tasks
+#define CONFIGURE_INIT_TASK_TABLE_SIZE \
+ sizeof(CONFIGURE_INIT_TASK_TABLE) / sizeof(rtems_initialization_tasks_table)
+
+#define FATAL_ERROR_DESCRIPTION "Core workspace too small"
+#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE
+#define FATAL_ERROR_EXPECTED_IS_INTERNAL TRUE
+#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_WORKSPACE_ALLOCATION
+
+char Workspace[ 64 * 1024 ] CPU_STRUCTURE_ALIGNMENT;
+
+void force_error()
+{
+ rtems_configuration_table New_Configuration;
+ New_Configuration = *_Configuration_Table;
+
+ New_Configuration.work_space_start = Workspace;
+ New_Configuration.work_space_size = 256;
+
+ rtems_initialize_executive_early( &New_Configuration );
+ /* we will not run this far */
+}
diff --git a/testsuites/sptests/spfatal09/Makefile.am b/testsuites/sptests/spfatal09/Makefile.am
new file mode 100644
index 0000000000..cd976dc9f4
--- /dev/null
+++ b/testsuites/sptests/spfatal09/Makefile.am
@@ -0,0 +1,27 @@
+##
+## $Id$
+##
+
+MANAGERS = all
+
+rtems_tests_PROGRAMS = spfatal09.exe
+spfatal09_exe_SOURCES = ../spfatal_support/init.c ../spfatal_support/system.h testcase.h
+
+dist_rtems_tests_DATA = spfatal09.scn
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+spfatal09_exe_LDADD = $(MANAGERS_NOT_WANTED:%=$(PROJECT_LIB)/no-%.rel)
+
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+
+LINK_OBJS = $(spfatal09_exe_OBJECTS) $(spfatal09_exe_LDADD)
+LINK_LIBS = $(spfatal09_exe_LDLIBS)
+
+spfatal09.exe$(EXEEXT): $(spfatal09_exe_OBJECTS) $(spfatal09_exe_DEPENDENCIES)
+ @rm -f spfatal09.exe$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/sptests/spfatal09/spfatal09.scn b/testsuites/sptests/spfatal09/spfatal09.scn
new file mode 100644
index 0000000000..458254012e
--- /dev/null
+++ b/testsuites/sptests/spfatal09/spfatal09.scn
@@ -0,0 +1 @@
+Fatal error (Core invalid workspace address) hit
diff --git a/testsuites/sptests/spfatal09/testcase.h b/testsuites/sptests/spfatal09/testcase.h
new file mode 100644
index 0000000000..8c0b460103
--- /dev/null
+++ b/testsuites/sptests/spfatal09/testcase.h
@@ -0,0 +1,41 @@
+/*
+ * Classic API Init task create failure
+ *
+ * $Id$
+ */
+
+/*
+ * Way too much stack space. Should generate a fatal error
+ * on the init task create.
+ */
+#define CONFIGURE_HAS_OWN_INIT_TASK_TABLE
+#define CONFIGURE_INIT_TASK_STACK_SIZE RTEMS_MINIMUM_STACK_SIZE
+rtems_initialization_tasks_table Initialization_tasks[] = {
+ { rtems_build_name('I', 'N', 'I', ' '),
+ RTEMS_MINIMUM_STACK_SIZE,
+ 1,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ Init,
+ RTEMS_DEFAULT_MODES,
+ 0
+ }
+};
+#define CONFIGURE_INIT_TASK_TABLE Initialization_tasks
+#define CONFIGURE_INIT_TASK_TABLE_SIZE \
+ sizeof(CONFIGURE_INIT_TASK_TABLE) / sizeof(rtems_initialization_tasks_table)
+
+#define FATAL_ERROR_DESCRIPTION "Core invalid workspace address"
+#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE
+#define FATAL_ERROR_EXPECTED_IS_INTERNAL TRUE
+#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_INVALID_WORKSPACE_ADDRESS
+
+void force_error()
+{
+ rtems_configuration_table New_Configuration;
+ New_Configuration = *_Configuration_Table;
+
+ New_Configuration.work_space_start = NULL;
+
+ rtems_initialize_executive_early( &New_Configuration );
+ /* we will not run this far */
+}
diff --git a/testsuites/sptests/spfatal10/Makefile.am b/testsuites/sptests/spfatal10/Makefile.am
new file mode 100644
index 0000000000..286fd3a9f2
--- /dev/null
+++ b/testsuites/sptests/spfatal10/Makefile.am
@@ -0,0 +1,27 @@
+##
+## $Id$
+##
+
+MANAGERS = all
+
+rtems_tests_PROGRAMS = spfatal10.exe
+spfatal10_exe_SOURCES = ../spfatal_support/init.c ../spfatal_support/system.h testcase.h
+
+dist_rtems_tests_DATA = spfatal10.scn
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+spfatal10_exe_LDADD = $(MANAGERS_NOT_WANTED:%=$(PROJECT_LIB)/no-%.rel)
+
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+
+LINK_OBJS = $(spfatal10_exe_OBJECTS) $(spfatal10_exe_LDADD)
+LINK_LIBS = $(spfatal10_exe_LDLIBS)
+
+spfatal10.exe$(EXEEXT): $(spfatal10_exe_OBJECTS) $(spfatal10_exe_DEPENDENCIES)
+ @rm -f spfatal10.exe$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/sptests/spfatal10/spfatal10.scn b/testsuites/sptests/spfatal10/spfatal10.scn
new file mode 100644
index 0000000000..d3dcd3c360
--- /dev/null
+++ b/testsuites/sptests/spfatal10/spfatal10.scn
@@ -0,0 +1 @@
+Fatal error (Core NULL Configuration Table) hit
diff --git a/testsuites/sptests/spfatal10/testcase.h b/testsuites/sptests/spfatal10/testcase.h
new file mode 100644
index 0000000000..1d40f56dca
--- /dev/null
+++ b/testsuites/sptests/spfatal10/testcase.h
@@ -0,0 +1,36 @@
+/*
+ * Classic API Init task create failure
+ *
+ * $Id$
+ */
+
+/*
+ * Way too much stack space. Should generate a fatal error
+ * on the init task create.
+ */
+#define CONFIGURE_HAS_OWN_INIT_TASK_TABLE
+#define CONFIGURE_INIT_TASK_STACK_SIZE RTEMS_MINIMUM_STACK_SIZE
+rtems_initialization_tasks_table Initialization_tasks[] = {
+ { rtems_build_name('I', 'N', 'I', ' '),
+ RTEMS_MINIMUM_STACK_SIZE,
+ 1,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ Init,
+ RTEMS_DEFAULT_MODES,
+ 0
+ }
+};
+#define CONFIGURE_INIT_TASK_TABLE Initialization_tasks
+#define CONFIGURE_INIT_TASK_TABLE_SIZE \
+ sizeof(CONFIGURE_INIT_TASK_TABLE) / sizeof(rtems_initialization_tasks_table)
+
+#define FATAL_ERROR_DESCRIPTION "Core NULL Configuration Table"
+#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE
+#define FATAL_ERROR_EXPECTED_IS_INTERNAL TRUE
+#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_NO_CONFIGURATION_TABLE
+
+void force_error()
+{
+ rtems_initialize_executive_early( NULL );
+ /* we will not run this far */
+}
diff --git a/testsuites/sptests/spfatal_support/init.c b/testsuites/sptests/spfatal_support/init.c
new file mode 100644
index 0000000000..0cce763bae
--- /dev/null
+++ b/testsuites/sptests/spfatal_support/init.c
@@ -0,0 +1,154 @@
+/* Init
+ *
+ * This routine is the initialization task for this test program.
+ * It is a user initialization task and has the responsibility for creating
+ * and starting the tasks that make up the test. If the time of day
+ * clock is required for the test, it should also be set to a known
+ * value by this function.
+ *
+ * Input parameters:
+ * argument - task argument
+ *
+ * Output parameters: NONE
+ *
+ * COPYRIGHT (c) 1989-2008.
+ * 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.
+ *
+ * $Id$
+ */
+
+#define TEST_INIT
+#include "system.h"
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ force_error();
+ printk( "Fatal error (%s) NOT hit\n", FATAL_ERROR_DESCRIPTION );
+ rtems_test_exit(0);
+}
+
+char *Sources[] = {
+ "INTERNAL_ERROR_CORE",
+ "INTERNAL_ERROR_RTEMS_API",
+ "INTERNAL_ERROR_POSIX_API",
+ "INTERNAL_ERROR_ITRON_API"
+};
+
+
+char *Errors_Rtems[] = {
+ "RTEMS_SUCCESSFUL", /* successful completion */
+ "RTEMS_TASK_EXITTED", /* returned from a task */
+ "RTEMS_MP_NOT_CONFIGURED", /* multiprocessing not configured */
+ "RTEMS_INVALID_NAME", /* invalid object name */
+ "RTEMS_INVALID_ID", /* invalid object id */
+ "RTEMS_TOO_MANY", /* too many */
+ "RTEMS_TIMEOUT", /* timed out waiting */
+ "RTEMS_OBJECT_WAS_DELETED", /* object was deleted while waiting */
+ "RTEMS_INVALID_SIZE", /* specified size was invalid */
+ "RTEMS_INVALID_ADDRESS", /* address specified is invalid */
+ "RTEMS_INVALID_NUMBER", /* number was invalid */
+ "RTEMS_NOT_DEFINED", /* item has not been initialized */
+ "RTEMS_RESOURCE_IN_USE", /* resources still outstanding */
+ "RTEMS_UNSATISFIED", /* request not satisfied */
+ "RTEMS_INCORRECT_STATE", /* task is in wrong state */
+ "RTEMS_ALREADY_SUSPENDED", /* task already in state */
+ "RTEMS_ILLEGAL_ON_SELF", /* illegal operation on calling task */
+ "RTEMS_ILLEGAL_ON_REMOTE_OBJECT", /* illegal operation for remote object */
+ "RTEMS_CALLED_FROM_ISR", /* called from ISR */
+ "RTEMS_INVALID_PRIORITY", /* invalid task priority */
+ "RTEMS_INVALID_CLOCK", /* invalid date/time */
+ "RTEMS_INVALID_NODE", /* invalid node id */
+ "RTEMS_NOT_OWNER_OF_RESOURCE", /* not owner of resource */
+ "RTEMS_NOT_CONFIGURED", /* directive not configured */
+ "RTEMS_NOT_IMPLEMENTED" /* directive not implemented */
+};
+
+char *Errors_Core[] = {
+ "INTERNAL_ERROR_NO_CONFIGURATION_TABLE",
+ "INTERNAL_ERROR_NO_CPU_TABLE",
+ "INTERNAL_ERROR_INVALID_WORKSPACE_ADDRESS",
+ "INTERNAL_ERROR_TOO_LITTLE_WORKSPACE",
+ "INTERNAL_ERROR_WORKSPACE_ALLOCATION",
+ "INTERNAL_ERROR_INTERRUPT_STACK_TOO_SMALL",
+ "INTERNAL_ERROR_THREAD_EXITTED",
+ "INTERNAL_ERROR_INCONSISTENT_MP_INFORMATION",
+ "INTERNAL_ERROR_INVALID_NODE",
+ "INTERNAL_ERROR_NO_MPCI",
+ "INTERNAL_ERROR_BAD_PACKET",
+ "INTERNAL_ERROR_OUT_OF_PACKETS",
+ "INTERNAL_ERROR_OUT_OF_GLOBAL_OBJECTS",
+ "INTERNAL_ERROR_OUT_OF_PROXIES",
+ "INTERNAL_ERROR_INVALID_GLOBAL_ID",
+ "INTERNAL_ERROR_BAD_STACK_HOOK",
+ "INTERNAL_ERROR_BAD_ATTRIBUTES",
+ "INTERNAL_ERROR_IMPLEMENTATION_KEY_CREATE_INCONSISTENCY",
+ "INTERNAL_ERROR_IMPLEMENTATION_BLOCKING_OPERATION_CANCEL",
+ "INTERNAL_ERROR_MUTEX_OBTAIN_FROM_BAD_STATE"
+};
+
+void Put_Error( uint32_t source, uint32_t error )
+{
+ if ( source == INTERNAL_ERROR_CORE ) {
+ if ( error > INTERNAL_ERROR_MUTEX_OBTAIN_FROM_BAD_STATE )
+ printk("Unknown Internal Core Error (%d)", error);
+ else
+ printk( Errors_Core[ error ] );
+ }
+ else if (source == INTERNAL_ERROR_RTEMS_API ){
+ if (error > RTEMS_NOT_IMPLEMENTED )
+ printk("Unknown Internal Rtems Error (%d)", error);
+ else
+ printk( Errors_Rtems[ error ] );
+ }
+}
+
+void Put_Source( uint32_t source )
+{
+ if ( source > INTERNAL_ERROR_ITRON_API )
+ printk("Unknown Source (%d)", source);
+ else
+ printk( Sources[ source ] );
+}
+
+
+rtems_extension Fatal_extension(
+ uint32_t source,
+ boolean is_internal,
+ uint32_t error
+)
+{
+ printk( "Fatal error (%s) hit\n", FATAL_ERROR_DESCRIPTION );
+
+ if ( source != FATAL_ERROR_EXPECTED_SOURCE ){
+ printk( "ERROR==> Fatal Extension source Expected (");
+ Put_Source( FATAL_ERROR_EXPECTED_SOURCE );
+ printk( ") received (");
+ Put_Source( source );
+ printk( ")\n" );
+ }
+
+ if ( is_internal != FATAL_ERROR_EXPECTED_IS_INTERNAL )
+ {
+ if ( is_internal == TRUE )
+ printk( "ERROR==> Fatal Extension is internal set to TRUE expected FALSE\n" );
+ else
+ printk( "ERROR==> Fatal Extension is internal set to FALSE expected TRUE\n" );
+ }
+
+ if ( error != FATAL_ERROR_EXPECTED_ERROR ) {
+ printk( "ERROR==> Fatal Error Expected (");
+ Put_Error( source, FATAL_ERROR_EXPECTED_ERROR );
+ printk( ") received (");
+ Put_Error( source, error );
+ printk( ")\n" );
+ }
+
+ /* return and let the CPU halt */
+}
+
diff --git a/testsuites/sptests/spfatal_support/system.h b/testsuites/sptests/spfatal_support/system.h
new file mode 100644
index 0000000000..7732e5c6c9
--- /dev/null
+++ b/testsuites/sptests/spfatal_support/system.h
@@ -0,0 +1,72 @@
+/* system.h
+ *
+ * This include file contains information that is included in every
+ * function in the test set.
+ *
+ * COPYRIGHT (c) 1989-1999.
+ * 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.
+ *
+ * $Id$
+ */
+
+/*
+ * Some of the fatal error cases require the ability to peek inside RTEMS
+ */
+#define __RTEMS_VIOLATE_KERNEL_VISIBILITY__
+#include <rtems.h>
+#include <tmacros.h>
+
+/* functions */
+
+rtems_task Init(
+ rtems_task_argument argument
+);
+
+rtems_extension Fatal_extension(
+ uint32_t source,
+ boolean is_internal,
+ uint32_t error
+);
+
+/* need prototypes */
+
+#include "testcase.h"
+
+/* configuration information */
+
+extern rtems_extensions_table initial_extensions;
+
+#define CONFIGURE_INITIAL_EXTENSIONS \
+ { \
+ NULL, /* create */ \
+ NULL, /* start */ \
+ NULL, /* restart */ \
+ NULL, /* delete */ \
+ NULL, /* switch */ \
+ NULL, /* begin */ \
+ NULL, /* exitted */ \
+ Fatal_extension /* fatal */ \
+ }
+
+/* extra parameters may be in testcase.h */
+#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
+#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
+
+/* always need an Init task, some cases need more tasks */
+#ifndef SPFATAL_TEST_CASE_EXTRA_TASKS
+#define SPFATAL_TEST_CASE_EXTRA_TASKS 0
+#endif
+#define CONFIGURE_MAXIMUM_TASKS \
+ (SPFATAL_TEST_CASE_EXTRA_TASKS + 1)
+
+#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+#include <rtems/confdefs.h>
+
+/* global variables */
+
+/* end of include file */