From 1a48cbfa16bf54a442f9394e4c4d9c2211e82865 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 11 Nov 2019 20:08:46 +0100 Subject: sptests: Avoid include path magic Update #3818. --- testsuites/libtests/Makefile.am | 6 +- testsuites/libtests/devnullfatal01/init.c | 37 ++++++ testsuites/libtests/devnullfatal01/testcase.h | 29 ----- testsuites/psxtests/Makefile.am | 10 +- testsuites/psxtests/psxfatal01/init.c | 45 +++++++ testsuites/psxtests/psxfatal01/testcase.h | 37 ------ testsuites/psxtests/psxfatal02/init.c | 49 +++++++ testsuites/psxtests/psxfatal02/testcase.h | 41 ------ testsuites/psxtests/psxfatal_support/init.c | 135 ------------------- testsuites/psxtests/psxfatal_support/psxfatal.h | 14 ++ .../psxtests/psxfatal_support/psxfatalimpl.h | 121 +++++++++++++++++ testsuites/sptests/Makefile.am | 95 ++++++-------- testsuites/sptests/spfatal01/init.c | 48 +++++++ testsuites/sptests/spfatal01/testcase.h | 40 ------ testsuites/sptests/spfatal02/init.c | 46 +++++++ testsuites/sptests/spfatal02/testcase.h | 38 ------ testsuites/sptests/spfatal03/init.c | 54 ++++++++ testsuites/sptests/spfatal03/testcase.h | 46 ------- testsuites/sptests/spfatal04/init.c | 43 ++++++ testsuites/sptests/spfatal04/testcase.h | 35 ----- testsuites/sptests/spfatal05/init.c | 77 +++++++++++ testsuites/sptests/spfatal05/testcase.h | 69 ---------- testsuites/sptests/spfatal06/init.c | 60 +++++++++ testsuites/sptests/spfatal06/testcase.h | 52 -------- testsuites/sptests/spfatal08/init.c | 31 +++++ testsuites/sptests/spfatal08/testcase.h | 23 ---- testsuites/sptests/spfatal09/init.c | 32 +++++ testsuites/sptests/spfatal09/testcase.h | 24 ---- testsuites/sptests/spfatal10/init.c | 48 +++++++ testsuites/sptests/spfatal10/testcase.h | 40 ------ testsuites/sptests/spfatal11/init.c | 48 +++++++ testsuites/sptests/spfatal11/testcase.h | 40 ------ testsuites/sptests/spfatal12/init.c | 33 +++++ testsuites/sptests/spfatal12/testcase.h | 25 ---- testsuites/sptests/spfatal14/init.c | 30 +++++ testsuites/sptests/spfatal14/testcase.h | 22 ---- testsuites/sptests/spfatal15/init.c | 29 +++++ testsuites/sptests/spfatal15/testcase.h | 21 --- testsuites/sptests/spfatal24/init.c | 31 +++++ testsuites/sptests/spfatal24/testcase.h | 23 ---- testsuites/sptests/spfatal25/init.c | 33 +++++ testsuites/sptests/spfatal25/testcase.h | 25 ---- testsuites/sptests/spfatal27/init.c | 34 +++++ testsuites/sptests/spfatal27/testcase.h | 26 ---- testsuites/sptests/spfatal28/init.c | 49 +++++++ testsuites/sptests/spfatal28/testcase.h | 41 ------ testsuites/sptests/spfatal29/init.c | 52 ++++++++ testsuites/sptests/spfatal29/testcase.h | 44 ------- testsuites/sptests/spfatal32/init.c | 35 +++++ testsuites/sptests/spfatal32/testcase.h | 27 ---- testsuites/sptests/spfatal_support/init.c | 144 --------------------- testsuites/sptests/spfatal_support/spfatal.h | 14 ++ testsuites/sptests/spfatal_support/spfatalimpl.h | 136 +++++++++++++++++++ 53 files changed, 1273 insertions(+), 1114 deletions(-) create mode 100644 testsuites/libtests/devnullfatal01/init.c delete mode 100644 testsuites/libtests/devnullfatal01/testcase.h create mode 100644 testsuites/psxtests/psxfatal01/init.c delete mode 100644 testsuites/psxtests/psxfatal01/testcase.h create mode 100644 testsuites/psxtests/psxfatal02/init.c delete mode 100644 testsuites/psxtests/psxfatal02/testcase.h delete mode 100644 testsuites/psxtests/psxfatal_support/init.c create mode 100644 testsuites/psxtests/psxfatal_support/psxfatal.h create mode 100644 testsuites/psxtests/psxfatal_support/psxfatalimpl.h create mode 100644 testsuites/sptests/spfatal01/init.c delete mode 100644 testsuites/sptests/spfatal01/testcase.h create mode 100644 testsuites/sptests/spfatal02/init.c delete mode 100644 testsuites/sptests/spfatal02/testcase.h create mode 100644 testsuites/sptests/spfatal03/init.c delete mode 100644 testsuites/sptests/spfatal03/testcase.h create mode 100644 testsuites/sptests/spfatal04/init.c delete mode 100644 testsuites/sptests/spfatal04/testcase.h create mode 100644 testsuites/sptests/spfatal05/init.c delete mode 100644 testsuites/sptests/spfatal05/testcase.h create mode 100644 testsuites/sptests/spfatal06/init.c delete mode 100644 testsuites/sptests/spfatal06/testcase.h create mode 100644 testsuites/sptests/spfatal08/init.c delete mode 100644 testsuites/sptests/spfatal08/testcase.h create mode 100644 testsuites/sptests/spfatal09/init.c delete mode 100644 testsuites/sptests/spfatal09/testcase.h create mode 100644 testsuites/sptests/spfatal10/init.c delete mode 100644 testsuites/sptests/spfatal10/testcase.h create mode 100644 testsuites/sptests/spfatal11/init.c delete mode 100644 testsuites/sptests/spfatal11/testcase.h create mode 100644 testsuites/sptests/spfatal12/init.c delete mode 100644 testsuites/sptests/spfatal12/testcase.h create mode 100644 testsuites/sptests/spfatal14/init.c delete mode 100644 testsuites/sptests/spfatal14/testcase.h create mode 100644 testsuites/sptests/spfatal15/init.c delete mode 100644 testsuites/sptests/spfatal15/testcase.h create mode 100644 testsuites/sptests/spfatal24/init.c delete mode 100644 testsuites/sptests/spfatal24/testcase.h create mode 100644 testsuites/sptests/spfatal25/init.c delete mode 100644 testsuites/sptests/spfatal25/testcase.h create mode 100644 testsuites/sptests/spfatal27/init.c delete mode 100644 testsuites/sptests/spfatal27/testcase.h create mode 100644 testsuites/sptests/spfatal28/init.c delete mode 100644 testsuites/sptests/spfatal28/testcase.h create mode 100644 testsuites/sptests/spfatal29/init.c delete mode 100644 testsuites/sptests/spfatal29/testcase.h create mode 100644 testsuites/sptests/spfatal32/init.c delete mode 100644 testsuites/sptests/spfatal32/testcase.h delete mode 100644 testsuites/sptests/spfatal_support/init.c create mode 100644 testsuites/sptests/spfatal_support/spfatal.h create mode 100644 testsuites/sptests/spfatal_support/spfatalimpl.h diff --git a/testsuites/libtests/Makefile.am b/testsuites/libtests/Makefile.am index a9af43e1c9..b7a102dc7f 100644 --- a/testsuites/libtests/Makefile.am +++ b/testsuites/libtests/Makefile.am @@ -313,11 +313,9 @@ if TEST_devnullfatal01 lib_tests += devnullfatal01 lib_screens += devnullfatal01/devnullfatal01.scn lib_docs += devnullfatal01/devnullfatal01.doc -devnullfatal01_SOURCES = ../sptests/spfatal_support/init.c \ - devnullfatal01/testcase.h +devnullfatal01_SOURCES = devnullfatal01/init.c devnullfatal01_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_devnullfatal01) \ - $(support_includes) -I$(top_srcdir)/../../sptests/spfatal_support \ - -I$(top_srcdir)/devnullfatal01 + $(support_includes) endif if DLTESTS diff --git a/testsuites/libtests/devnullfatal01/init.c b/testsuites/libtests/devnullfatal01/init.c new file mode 100644 index 0000000000..ecf63cfe51 --- /dev/null +++ b/testsuites/libtests/devnullfatal01/init.c @@ -0,0 +1,37 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "../../sptests/spfatal_support/spfatal.h" + +/* + * COPYRIGHT (c) 1989-2010, 2017. + * 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. + */ + +#define FATAL_ERROR_TEST_NAME "/DEV/NULL 1" +#define FATAL_ERROR_DESCRIPTION "/dev/null already registered" +#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_RTEMS_API +#define FATAL_ERROR_EXPECTED_ERROR RTEMS_TOO_MANY + +#include +#include "tmacros.h" + +static void force_error(void) +{ + int status; + + status = rtems_io_register_name( "/dev/null", 0, 0 ); + directive_failed( status, "io register" ); + + status = null_initialize( 0, 0, NULL ); + + /* A fatal error would be raised in previous call */ + /* we will not run this far */ +} + +#include "../../sptests/spfatal_support/spfatalimpl.h" diff --git a/testsuites/libtests/devnullfatal01/testcase.h b/testsuites/libtests/devnullfatal01/testcase.h deleted file mode 100644 index b97b7d0a58..0000000000 --- a/testsuites/libtests/devnullfatal01/testcase.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * COPYRIGHT (c) 1989-2010, 2017. - * 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. - */ - -#define FATAL_ERROR_TEST_NAME "/DEV/NULL 1" -#define FATAL_ERROR_DESCRIPTION "/dev/null already registered" -#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_RTEMS_API -#define FATAL_ERROR_EXPECTED_ERROR RTEMS_TOO_MANY - -#include -#include "tmacros.h" - -void force_error() -{ - int status; - - status = rtems_io_register_name( "/dev/null", 0, 0 ); - directive_failed( status, "io register" ); - - status = null_initialize( 0, 0, NULL ); - - /* A fatal error would be raised in previous call */ - /* we will not run this far */ -} diff --git a/testsuites/psxtests/Makefile.am b/testsuites/psxtests/Makefile.am index 0d213a4437..1f9e4233ec 100755 --- a/testsuites/psxtests/Makefile.am +++ b/testsuites/psxtests/Makefile.am @@ -391,19 +391,17 @@ endif if TEST_psxfatal01 psx_tests += psxfatal01 psx_screens += psxfatal01/psxfatal01.scn -psxfatal01_SOURCES = psxfatal_support/init.c \ - psxfatal01/testcase.h +psxfatal01_SOURCES = psxfatal01/init.c psxfatal01_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_psxfatal01) \ - $(support_includes) -I$(top_srcdir)/psxfatal01 + $(support_includes) endif if TEST_psxfatal02 psx_tests += psxfatal02 psx_screens += psxfatal02/psxfatal02.scn -psxfatal02_SOURCES = psxfatal_support/init.c \ - psxfatal02/testcase.h +psxfatal02_SOURCES = psxfatal02/init.c psxfatal02_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_psxfatal02) \ - $(support_includes) -I$(top_srcdir)/psxfatal02 + $(support_includes) endif if TEST_psxfchx01 diff --git a/testsuites/psxtests/psxfatal01/init.c b/testsuites/psxtests/psxfatal01/init.c new file mode 100644 index 0000000000..fb0e2b24ed --- /dev/null +++ b/testsuites/psxtests/psxfatal01/init.c @@ -0,0 +1,45 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "../psxfatal_support/psxfatal.h" + +/* + * Classic API Init task create failure + */ + +#include + +#include + +/* + * Way too much stack space. Should generate a fatal error + * on the init task create. + */ +#define CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE +#define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE 0 +posix_initialization_threads_table POSIX_Initialization_threads[] = { + { NULL, /* bad thread entry */ + 0 + } +}; + +#define CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME POSIX_Initialization_threads + +#define CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE \ + sizeof(CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME) / \ + sizeof(posix_initialization_threads_table) + +#define FATAL_ERROR_TEST_NAME "1" +#define FATAL_ERROR_DESCRIPTION \ + "POSIX API Init thread create failure - NULL entry" +#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE +#define FATAL_ERROR_EXPECTED_ERROR \ + INTERNAL_ERROR_POSIX_INIT_THREAD_CREATE_FAILED + +static void force_error(void) +{ + /* we will not run this far */ +} + +#include "../psxfatal_support/psxfatalimpl.h" diff --git a/testsuites/psxtests/psxfatal01/testcase.h b/testsuites/psxtests/psxfatal01/testcase.h deleted file mode 100644 index e67f879ff6..0000000000 --- a/testsuites/psxtests/psxfatal01/testcase.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Classic API Init task create failure - */ - -#include - -#include - -/* - * Way too much stack space. Should generate a fatal error - * on the init task create. - */ -#define CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE -#define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE 0 -posix_initialization_threads_table POSIX_Initialization_threads[] = { - { NULL, /* bad thread entry */ - 0 - } -}; - -#define CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME POSIX_Initialization_threads - -#define CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE \ - sizeof(CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME) / \ - sizeof(posix_initialization_threads_table) - -#define FATAL_ERROR_TEST_NAME "1" -#define FATAL_ERROR_DESCRIPTION \ - "POSIX API Init thread create failure - NULL entry" -#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE -#define FATAL_ERROR_EXPECTED_ERROR \ - INTERNAL_ERROR_POSIX_INIT_THREAD_CREATE_FAILED - -void force_error(void) -{ - /* we will not run this far */ -} diff --git a/testsuites/psxtests/psxfatal02/init.c b/testsuites/psxtests/psxfatal02/init.c new file mode 100644 index 0000000000..260c0aea0d --- /dev/null +++ b/testsuites/psxtests/psxfatal02/init.c @@ -0,0 +1,49 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "../psxfatal_support/psxfatal.h" + +/* + * Classic API Init task create failure + */ + +#include +#include + +#include + +/* + * Way too much stack space. Should generate a fatal error + * on the init task create. + */ +#define CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE +#define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE 0 +posix_initialization_threads_table POSIX_Initialization_threads[] = { + { POSIX_Init, +#if INT_MAX < (12 * 1024 * 1024) + INT_MAX +#else + 12 * 1024 * 1024 /* too much stack */ +#endif + } +}; + +#define CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME POSIX_Initialization_threads + +#define CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE \ + sizeof(CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME) / \ + sizeof(posix_initialization_threads_table) + +#define FATAL_ERROR_TEST_NAME "2" +#define FATAL_ERROR_DESCRIPTION \ + "POSIX API Init thread create failure -- no memory for stack" +#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE +#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_POSIX_INIT_THREAD_CREATE_FAILED + +static void force_error(void) +{ + /* we will not run this far */ +} + +#include "../psxfatal_support/psxfatalimpl.h" diff --git a/testsuites/psxtests/psxfatal02/testcase.h b/testsuites/psxtests/psxfatal02/testcase.h deleted file mode 100644 index 7f97a6769e..0000000000 --- a/testsuites/psxtests/psxfatal02/testcase.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Classic API Init task create failure - */ - -#include -#include - -#include - -/* - * Way too much stack space. Should generate a fatal error - * on the init task create. - */ -#define CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE -#define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE 0 -posix_initialization_threads_table POSIX_Initialization_threads[] = { - { POSIX_Init, -#if INT_MAX < (12 * 1024 * 1024) - INT_MAX -#else - 12 * 1024 * 1024 /* too much stack */ -#endif - } -}; - -#define CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME POSIX_Initialization_threads - -#define CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE \ - sizeof(CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME) / \ - sizeof(posix_initialization_threads_table) - -#define FATAL_ERROR_TEST_NAME "2" -#define FATAL_ERROR_DESCRIPTION \ - "POSIX API Init thread create failure -- no memory for stack" -#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE -#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_POSIX_INIT_THREAD_CREATE_FAILED - -void force_error(void) -{ - /* we will not run this far */ -} diff --git a/testsuites/psxtests/psxfatal_support/init.c b/testsuites/psxtests/psxfatal_support/init.c deleted file mode 100644 index 2c305396d5..0000000000 --- a/testsuites/psxtests/psxfatal_support/init.c +++ /dev/null @@ -1,135 +0,0 @@ -/* - * COPYRIGHT (c) 1989-2010. - * 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. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include - -#include - -void *POSIX_Init(void *argument); - -void force_error(void); - -#include "testcase.h" - -const char rtems_test_name[] = "PSXFATAL " FATAL_ERROR_TEST_NAME; - -static void print_test_begin_message(void) -{ - static bool done = false; - - if (!done) { - done = true; - TEST_BEGIN(); - } -} - -void *POSIX_Init( - void *argument -) -{ - print_test_begin_message(); - force_error(); - printk( "Fatal error (%s) NOT hit\n", FATAL_ERROR_DESCRIPTION ); - rtems_test_exit(0); -} - -static void Put_Error( rtems_fatal_source source, rtems_fatal_code error ) -{ - if ( source == INTERNAL_ERROR_CORE ) { - printk( rtems_internal_error_text( error ) ); - } - else if (source == INTERNAL_ERROR_RTEMS_API ){ - printk( "%s", rtems_status_text( error ) ); - } - else if (source == INTERNAL_ERROR_POSIX_API ) { - printk( - "SOURCE=%d ERROR=%" PRIuMAX " %s", - source, - (uintmax_t) error, - strerror( (int) error ) - ); - } -} - -static void Put_Source( rtems_fatal_source source ) -{ - printk( "%s", rtems_fatal_source_text( source ) ); -} - -static void Fatal_extension( - rtems_fatal_source source, - bool always_set_to_false, - rtems_fatal_code error -) -{ - print_test_begin_message(); - 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 ( always_set_to_false ) - printk( "ERROR==> Fatal Extension is internal set to true expected false\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" ); - } - - if ( - source == FATAL_ERROR_EXPECTED_SOURCE - && !always_set_to_false - && error == FATAL_ERROR_EXPECTED_ERROR - ) { - TEST_END(); - } -} - -#define CONFIGURE_INIT - -#define CONFIGURE_INITIAL_EXTENSIONS \ - { \ - NULL, /* create */ \ - NULL, /* start */ \ - NULL, /* restart */ \ - NULL, /* delete */ \ - NULL, /* switch */ \ - NULL, /* begin */ \ - NULL, /* exitted */ \ - Fatal_extension /* fatal */ \ - }, \ - RTEMS_TEST_INITIAL_EXTENSION - -/* extra parameters may be in testcase.h */ -#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER -#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER - -/* always need an Init task, some cases need more tasks */ -#ifndef SPFATAL_TEST_CASE_EXTRA_THREADS -#define SPFATAL_TEST_CASE_EXTRA_THREADS 0 -#endif - -#define CONFIGURE_MAXIMUM_POSIX_THREADS \ - (SPFATAL_TEST_CASE_EXTRA_THREADS + 1) - -#define CONFIGURE_POSIX_INIT_THREAD_TABLE - -#include diff --git a/testsuites/psxtests/psxfatal_support/psxfatal.h b/testsuites/psxtests/psxfatal_support/psxfatal.h new file mode 100644 index 0000000000..253828bdbd --- /dev/null +++ b/testsuites/psxtests/psxfatal_support/psxfatal.h @@ -0,0 +1,14 @@ +/* + * COPYRIGHT (c) 1989-2010. + * 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. + */ + +#include + +#include + +void *POSIX_Init(void *argument); diff --git a/testsuites/psxtests/psxfatal_support/psxfatalimpl.h b/testsuites/psxtests/psxfatal_support/psxfatalimpl.h new file mode 100644 index 0000000000..928b07f335 --- /dev/null +++ b/testsuites/psxtests/psxfatal_support/psxfatalimpl.h @@ -0,0 +1,121 @@ +/* + * COPYRIGHT (c) 1989-2010. + * 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. + */ + +const char rtems_test_name[] = "PSXFATAL " FATAL_ERROR_TEST_NAME; + +static void print_test_begin_message(void) +{ + static bool done = false; + + if (!done) { + done = true; + TEST_BEGIN(); + } +} + +void *POSIX_Init( + void *argument +) +{ + print_test_begin_message(); + force_error(); + printk( "Fatal error (%s) NOT hit\n", FATAL_ERROR_DESCRIPTION ); + rtems_test_exit(0); +} + +static void Put_Error( rtems_fatal_source source, rtems_fatal_code error ) +{ + if ( source == INTERNAL_ERROR_CORE ) { + printk( rtems_internal_error_text( error ) ); + } + else if (source == INTERNAL_ERROR_RTEMS_API ){ + printk( "%s", rtems_status_text( error ) ); + } + else if (source == INTERNAL_ERROR_POSIX_API ) { + printk( + "SOURCE=%d ERROR=%" PRIuMAX " %s", + source, + (uintmax_t) error, + strerror( (int) error ) + ); + } +} + +static void Put_Source( rtems_fatal_source source ) +{ + printk( "%s", rtems_fatal_source_text( source ) ); +} + +static void Fatal_extension( + rtems_fatal_source source, + bool always_set_to_false, + rtems_fatal_code error +) +{ + print_test_begin_message(); + 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 ( always_set_to_false ) + printk( "ERROR==> Fatal Extension is internal set to true expected false\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" ); + } + + if ( + source == FATAL_ERROR_EXPECTED_SOURCE + && !always_set_to_false + && error == FATAL_ERROR_EXPECTED_ERROR + ) { + TEST_END(); + } +} + +#define CONFIGURE_INIT + +#define CONFIGURE_INITIAL_EXTENSIONS \ + { \ + NULL, /* create */ \ + NULL, /* start */ \ + NULL, /* restart */ \ + NULL, /* delete */ \ + NULL, /* switch */ \ + NULL, /* begin */ \ + NULL, /* exitted */ \ + Fatal_extension /* fatal */ \ + }, \ + RTEMS_TEST_INITIAL_EXTENSION + +/* extra parameters may be in testcase.h */ +#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER + +/* always need an Init task, some cases need more tasks */ +#ifndef SPFATAL_TEST_CASE_EXTRA_THREADS +#define SPFATAL_TEST_CASE_EXTRA_THREADS 0 +#endif + +#define CONFIGURE_MAXIMUM_POSIX_THREADS \ + (SPFATAL_TEST_CASE_EXTRA_THREADS + 1) + +#define CONFIGURE_POSIX_INIT_THREAD_TABLE + +#include diff --git a/testsuites/sptests/Makefile.am b/testsuites/sptests/Makefile.am index 900a2f80d4..09751b6d58 100644 --- a/testsuites/sptests/Makefile.am +++ b/testsuites/sptests/Makefile.am @@ -890,150 +890,135 @@ if TEST_spfatal01 sp_tests += spfatal01 sp_screens += spfatal01/spfatal01.scn sp_docs += spfatal01/spfatal01.doc -spfatal01_SOURCES = spfatal_support/init.c \ - spfatal01/testcase.h +spfatal01_SOURCES = spfatal01/init.c spfatal01_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_spfatal01) \ - $(support_includes) -I$(top_srcdir)/spfatal01 + $(support_includes) endif if TEST_spfatal02 sp_tests += spfatal02 sp_screens += spfatal02/spfatal02.scn sp_docs += spfatal02/spfatal02.doc -spfatal02_SOURCES = spfatal_support/init.c \ - spfatal02/testcase.h +spfatal02_SOURCES = spfatal02/init.c spfatal02_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_spfatal02) \ - $(support_includes) -I$(top_srcdir)/spfatal02 + $(support_includes) endif if TEST_spfatal03 sp_tests += spfatal03 sp_screens += spfatal03/spfatal03.scn sp_docs += spfatal03/spfatal03.doc -spfatal03_SOURCES = spfatal_support/init.c \ - spfatal03/testcase.h +spfatal03_SOURCES = spfatal03/init.c spfatal03_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_spfatal03) \ - $(support_includes) -I$(top_srcdir)/spfatal03 + $(support_includes) endif if TEST_spfatal04 sp_tests += spfatal04 sp_screens += spfatal04/spfatal04.scn sp_docs += spfatal04/spfatal04.doc -spfatal04_SOURCES = spfatal_support/init.c \ - spfatal04/testcase.h +spfatal04_SOURCES = spfatal04/init.c spfatal04_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_spfatal04) \ - $(support_includes) -I$(top_srcdir)/spfatal04 + $(support_includes) endif if TEST_spfatal05 sp_tests += spfatal05 sp_screens += spfatal05/spfatal05.scn sp_docs += spfatal05/spfatal05.doc -spfatal05_SOURCES = spfatal_support/init.c \ - spfatal05/testcase.h +spfatal05_SOURCES = spfatal05/init.c spfatal05_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_spfatal05) \ - $(support_includes) -I$(top_srcdir)/spfatal05 + $(support_includes) endif if TEST_spfatal06 sp_tests += spfatal06 sp_screens += spfatal06/spfatal06.scn sp_docs += spfatal06/spfatal06.doc -spfatal06_SOURCES = spfatal_support/init.c \ - spfatal06/testcase.h +spfatal06_SOURCES = spfatal06/init.c spfatal06_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_spfatal06) \ - $(support_includes) -I$(top_srcdir)/spfatal06 + $(support_includes) endif if TEST_spfatal08 sp_tests += spfatal08 sp_screens += spfatal08/spfatal08.scn sp_docs += spfatal08/spfatal08.doc -spfatal08_SOURCES = spfatal_support/init.c \ - spfatal08/testcase.h +spfatal08_SOURCES = spfatal08/init.c spfatal08_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_spfatal08) \ - $(support_includes) -I$(top_srcdir)/spfatal08 + $(support_includes) endif if TEST_spfatal09 sp_tests += spfatal09 sp_screens += spfatal09/spfatal09.scn sp_docs += spfatal09/spfatal09.doc -spfatal09_SOURCES = spfatal_support/init.c \ - spfatal09/testcase.h +spfatal09_SOURCES = spfatal09/init.c spfatal09_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_spfatal09) \ - $(support_includes) -I$(top_srcdir)/spfatal09 + $(support_includes) endif if TEST_spfatal10 sp_tests += spfatal10 sp_screens += spfatal10/spfatal10.scn sp_docs += spfatal10/spfatal10.doc -spfatal10_SOURCES = spfatal_support/init.c \ - spfatal10/testcase.h +spfatal10_SOURCES = spfatal10/init.c spfatal10_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_spfatal10) \ - $(support_includes) -I$(top_srcdir)/spfatal10 + $(support_includes) endif if TEST_spfatal11 sp_tests += spfatal11 sp_screens += spfatal11/spfatal11.scn sp_docs += spfatal11/spfatal11.doc -spfatal11_SOURCES = spfatal_support/init.c \ - spfatal11/testcase.h +spfatal11_SOURCES = spfatal11/init.c spfatal11_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_spfatal11) \ - $(support_includes) -I$(top_srcdir)/spfatal11 + $(support_includes) endif if TEST_spfatal12 sp_tests += spfatal12 sp_screens += spfatal12/spfatal12.scn sp_docs += spfatal12/spfatal12.doc -spfatal12_SOURCES = spfatal_support/init.c \ - spfatal12/testcase.h +spfatal12_SOURCES = spfatal12/init.c spfatal12_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_spfatal12) \ - $(support_includes) -I$(top_srcdir)/spfatal12 + $(support_includes) endif if TEST_spfatal14 sp_tests += spfatal14 sp_screens += spfatal14/spfatal14.scn sp_docs += spfatal14/spfatal14.doc -spfatal14_SOURCES = spfatal_support/init.c \ - spfatal14/testcase.h +spfatal14_SOURCES = spfatal14/init.c spfatal14_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_spfatal14) \ - $(support_includes) -I$(top_srcdir)/spfatal14 + $(support_includes) endif if TEST_spfatal15 sp_tests += spfatal15 sp_screens += spfatal15/spfatal15.scn sp_docs += spfatal15/spfatal15.doc -spfatal15_SOURCES = spfatal_support/init.c \ - spfatal15/testcase.h +spfatal15_SOURCES = spfatal15/init.c spfatal15_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_spfatal15) \ - $(support_includes) -I$(top_srcdir)/spfatal15 + $(support_includes) endif if TEST_spfatal24 sp_tests += spfatal24 sp_screens += spfatal24/spfatal24.scn sp_docs += spfatal24/spfatal24.doc -spfatal24_SOURCES = spfatal_support/init.c \ - spfatal24/testcase.h +spfatal24_SOURCES = spfatal24/init.c spfatal24_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_spfatal24) \ - $(support_includes) -I$(top_srcdir)/spfatal24 + $(support_includes) endif if TEST_spfatal25 sp_tests += spfatal25 sp_screens += spfatal25/spfatal25.scn sp_docs += spfatal25/spfatal25.doc -spfatal25_SOURCES = spfatal_support/init.c \ - spfatal25/testcase.h +spfatal25_SOURCES = spfatal25/init.c spfatal25_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_spfatal25) \ - $(support_includes) -I$(top_srcdir)/spfatal25 + $(support_includes) endif if TEST_spfatal26 @@ -1049,30 +1034,27 @@ if TEST_spfatal27 sp_tests += spfatal27 sp_screens += spfatal27/spfatal27.scn sp_docs += spfatal27/spfatal27.doc -spfatal27_SOURCES = spfatal_support/init.c \ - spfatal27/testcase.h +spfatal27_SOURCES = spfatal27/init.c spfatal27_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_spfatal27) \ - $(support_includes) -I$(top_srcdir)/spfatal27 + $(support_includes) endif if TEST_spfatal28 sp_tests += spfatal28 sp_screens += spfatal28/spfatal28.scn sp_docs += spfatal28/spfatal28.doc -spfatal28_SOURCES = spfatal_support/init.c \ - spfatal28/testcase.h +spfatal28_SOURCES = spfatal28/init.c spfatal28_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_spfatal28) \ - $(support_includes) -I$(top_srcdir)/spfatal28 + $(support_includes) endif if TEST_spfatal29 sp_tests += spfatal29 sp_screens += spfatal29/spfatal29.scn sp_docs += spfatal29/spfatal29.doc -spfatal29_SOURCES = spfatal_support/init.c \ - spfatal29/testcase.h +spfatal29_SOURCES = spfatal29/init.c spfatal29_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_spfatal29) \ - $(support_includes) -I$(top_srcdir)/spfatal29 + $(support_includes) endif if TEST_spfatal30 @@ -1097,10 +1079,9 @@ if TEST_spfatal32 sp_tests += spfatal32 sp_screens += spfatal32/spfatal32.scn sp_docs += spfatal32/spfatal32.doc -spfatal32_SOURCES = spfatal_support/init.c \ - spfatal32/testcase.h +spfatal32_SOURCES = spfatal32/init.c spfatal32_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_spfatal32) \ - $(support_includes) -I$(top_srcdir)/spfatal32 + $(support_includes) endif if TEST_spfifo01 diff --git a/testsuites/sptests/spfatal01/init.c b/testsuites/sptests/spfatal01/init.c new file mode 100644 index 0000000000..95067e74c6 --- /dev/null +++ b/testsuites/sptests/spfatal01/init.c @@ -0,0 +1,48 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "../spfatal_support/spfatal.h" + +/* + * Classic API Init task create failure + */ + +/* + * 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', ' '), + 32UL * 1024UL, + 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_TEST_NAME "1" +#define FATAL_ERROR_DESCRIPTION "Classic API Init task create failure" +#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE +#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_RTEMS_INIT_TASK_CREATE_FAILED + +static void force_error(void) +{ +/* + * Case 2: Null entry + * Case 3: semaphore_create + * _Thread_Dispatch_disable + * semaphore_obtain + */ + + /* we will not run this far */ +} + +#include "../spfatal_support/spfatalimpl.h" diff --git a/testsuites/sptests/spfatal01/testcase.h b/testsuites/sptests/spfatal01/testcase.h deleted file mode 100644 index 19cd16e72e..0000000000 --- a/testsuites/sptests/spfatal01/testcase.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Classic API Init task create failure - */ - -/* - * 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', ' '), - 32UL * 1024UL, - 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_TEST_NAME "1" -#define FATAL_ERROR_DESCRIPTION "Classic API Init task create failure" -#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE -#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_RTEMS_INIT_TASK_CREATE_FAILED - -void force_error() -{ -/* - * Case 2: Null entry - * Case 3: semaphore_create - * _Thread_Dispatch_disable - * semaphore_obtain - */ - - /* we will not run this far */ -} diff --git a/testsuites/sptests/spfatal02/init.c b/testsuites/sptests/spfatal02/init.c new file mode 100644 index 0000000000..e0f6a978fc --- /dev/null +++ b/testsuites/sptests/spfatal02/init.c @@ -0,0 +1,46 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "../spfatal_support/spfatal.h" + +/* + * Classic API Init task create failure + */ + +/* + * 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_TEST_NAME "2" +#define FATAL_ERROR_DESCRIPTION "Classic API Init task start failure" +#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE +#define FATAL_ERROR_EXPECTED_ERROR \ + INTERNAL_ERROR_RTEMS_INIT_TASK_ENTRY_IS_NULL + +static void force_error(void) +{ +/* + * Case 2: Null entry + */ + + /* we will not run this far */ +} + +#include "../spfatal_support/spfatalimpl.h" diff --git a/testsuites/sptests/spfatal02/testcase.h b/testsuites/sptests/spfatal02/testcase.h deleted file mode 100644 index 8ed2f44284..0000000000 --- a/testsuites/sptests/spfatal02/testcase.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Classic API Init task create failure - */ - -/* - * 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_TEST_NAME "2" -#define FATAL_ERROR_DESCRIPTION "Classic API Init task start failure" -#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE -#define FATAL_ERROR_EXPECTED_ERROR \ - INTERNAL_ERROR_RTEMS_INIT_TASK_ENTRY_IS_NULL - -void force_error() -{ -/* - * Case 2: Null entry - */ - - /* we will not run this far */ -} diff --git a/testsuites/sptests/spfatal03/init.c b/testsuites/sptests/spfatal03/init.c new file mode 100644 index 0000000000..10a9f277e8 --- /dev/null +++ b/testsuites/sptests/spfatal03/init.c @@ -0,0 +1,54 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "../spfatal_support/spfatal.h" + +/* + * Semaphore Obtain in Critical Section + * + * COPYRIGHT (c) 1989-2011. + * 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. + */ + +#include + +#define CONFIGURE_MAXIMUM_SEMAPHORES 10 + +#define FATAL_ERROR_TEST_NAME "3" +#define FATAL_ERROR_DESCRIPTION "Core Mutex obtain in critical section" +#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE +#define FATAL_ERROR_EXPECTED_ERROR \ + INTERNAL_ERROR_BAD_THREAD_DISPATCH_DISABLE_LEVEL + +static void force_error(void) +{ + + rtems_status_code status; + rtems_id mutex; + + status = rtems_semaphore_create( + rtems_build_name( 'S','0',' ',' '), + 0, + RTEMS_LOCAL| + RTEMS_SIMPLE_BINARY_SEMAPHORE, + 0, + &mutex + ); + directive_failed( status, "rtems_semaphore_create of S0"); + printk("Create semaphore S0\n"); + + printk("Obtain semaphore in dispatching critical section\n"); + _Thread_Dispatch_disable(); + status = rtems_semaphore_obtain( mutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT ); + /* !!! SHOULD NOT RETURN FROM THE ABOVE CALL */ + + rtems_test_assert( 0 ); + /* we will not run this far */ +} + +#include "../spfatal_support/spfatalimpl.h" diff --git a/testsuites/sptests/spfatal03/testcase.h b/testsuites/sptests/spfatal03/testcase.h deleted file mode 100644 index b6935657ea..0000000000 --- a/testsuites/sptests/spfatal03/testcase.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Semaphore Obtain in Critical Section - * - * COPYRIGHT (c) 1989-2011. - * 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. - */ - -#include - -#define CONFIGURE_MAXIMUM_SEMAPHORES 10 - -#define FATAL_ERROR_TEST_NAME "3" -#define FATAL_ERROR_DESCRIPTION "Core Mutex obtain in critical section" -#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE -#define FATAL_ERROR_EXPECTED_ERROR \ - INTERNAL_ERROR_BAD_THREAD_DISPATCH_DISABLE_LEVEL - -void force_error(void) -{ - - rtems_status_code status; - rtems_id mutex; - - status = rtems_semaphore_create( - rtems_build_name( 'S','0',' ',' '), - 0, - RTEMS_LOCAL| - RTEMS_SIMPLE_BINARY_SEMAPHORE, - 0, - &mutex - ); - directive_failed( status, "rtems_semaphore_create of S0"); - printk("Create semaphore S0\n"); - - printk("Obtain semaphore in dispatching critical section\n"); - _Thread_Dispatch_disable(); - status = rtems_semaphore_obtain( mutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT ); - /* !!! SHOULD NOT RETURN FROM THE ABOVE CALL */ - - rtems_test_assert( 0 ); - /* we will not run this far */ -} diff --git a/testsuites/sptests/spfatal04/init.c b/testsuites/sptests/spfatal04/init.c new file mode 100644 index 0000000000..cfbad5d409 --- /dev/null +++ b/testsuites/sptests/spfatal04/init.c @@ -0,0 +1,43 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "../spfatal_support/spfatal.h" + +/* + * Classic API Init task create failure + */ + +/* + * 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_TEST_NAME "4" +#define FATAL_ERROR_DESCRIPTION \ + "Classic API call rtems_fatal_error_occurred" +#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_RTEMS_API +#define FATAL_ERROR_EXPECTED_ERROR 0xdead + +static void force_error(void) +{ + rtems_fatal_error_occurred( 0xdead ); + /* we will not run this far */ +} + +#include "../spfatal_support/spfatalimpl.h" diff --git a/testsuites/sptests/spfatal04/testcase.h b/testsuites/sptests/spfatal04/testcase.h deleted file mode 100644 index 323a77762c..0000000000 --- a/testsuites/sptests/spfatal04/testcase.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Classic API Init task create failure - */ - -/* - * 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_TEST_NAME "4" -#define FATAL_ERROR_DESCRIPTION \ - "Classic API call rtems_fatal_error_occurred" -#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_RTEMS_API -#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/init.c b/testsuites/sptests/spfatal05/init.c new file mode 100644 index 0000000000..b0411162f2 --- /dev/null +++ b/testsuites/sptests/spfatal05/init.c @@ -0,0 +1,77 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "../spfatal_support/spfatal.h" + +/* + * Classic API Init task create failure + * + * COPYRIGHT (c) 1989-2009. + * 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. + */ + +/* + * 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_TEST_NAME "5" +#define FATAL_ERROR_DESCRIPTION "Core fall out of a task" +#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE +#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_THREAD_EXITTED + +rtems_task EmptyTask( rtems_task_argument unused ); + +rtems_task EmptyTask( + rtems_task_argument unused +) +{ +} + +static void force_error(void) +{ + 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( 100 ); + directive_failed( status, "rtems_task_wake_after" ); + + /* we will not run this far */ +} + +#include "../spfatal_support/spfatalimpl.h" diff --git a/testsuites/sptests/spfatal05/testcase.h b/testsuites/sptests/spfatal05/testcase.h deleted file mode 100644 index 933b7a5d45..0000000000 --- a/testsuites/sptests/spfatal05/testcase.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Classic API Init task create failure - * - * COPYRIGHT (c) 1989-2009. - * 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. - */ - -/* - * 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_TEST_NAME "5" -#define FATAL_ERROR_DESCRIPTION "Core fall out of a task" -#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE -#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_THREAD_EXITTED - -rtems_task EmptyTask( rtems_task_argument unused ); - -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( 100 ); - directive_failed( status, "rtems_task_wake_after" ); - - /* we will not run this far */ -} diff --git a/testsuites/sptests/spfatal06/init.c b/testsuites/sptests/spfatal06/init.c new file mode 100644 index 0000000000..842931a336 --- /dev/null +++ b/testsuites/sptests/spfatal06/init.c @@ -0,0 +1,60 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "../spfatal_support/spfatal.h" + +/* + * Classic API Init task create failure + * + * 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.org/license/LICENSE. + */ + +/* + * 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_TEST_NAME "6" +#define FATAL_ERROR_DESCRIPTION \ + "Core initialize with invalid stack hook" +#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE +#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_BAD_STACK_HOOK + +void *New_stack_allocate_hook(size_t unused); + +#define CONFIGURE_TASK_STACK_ALLOCATOR New_stack_allocate_hook + +#define CONFIGURE_TASK_STACK_DEALLOCATOR NULL + +void *New_stack_allocate_hook(size_t unused) +{ + return NULL; +} + +static void force_error(void) +{ + /* we will not run this far */ +} + +#include "../spfatal_support/spfatalimpl.h" diff --git a/testsuites/sptests/spfatal06/testcase.h b/testsuites/sptests/spfatal06/testcase.h deleted file mode 100644 index 8ec16271fe..0000000000 --- a/testsuites/sptests/spfatal06/testcase.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Classic API Init task create failure - * - * 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.org/license/LICENSE. - */ - -/* - * 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_TEST_NAME "6" -#define FATAL_ERROR_DESCRIPTION \ - "Core initialize with invalid stack hook" -#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE -#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_BAD_STACK_HOOK - -void *New_stack_allocate_hook(size_t unused); - -#define CONFIGURE_TASK_STACK_ALLOCATOR New_stack_allocate_hook - -#define CONFIGURE_TASK_STACK_DEALLOCATOR NULL - -void *New_stack_allocate_hook(size_t unused) -{ - return NULL; -} - -void force_error() -{ - /* we will not run this far */ -} diff --git a/testsuites/sptests/spfatal08/init.c b/testsuites/sptests/spfatal08/init.c new file mode 100644 index 0000000000..568bdf7dcb --- /dev/null +++ b/testsuites/sptests/spfatal08/init.c @@ -0,0 +1,31 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "../spfatal_support/spfatal.h" + +/* + * Classic API Init task create failure + * + * 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.org/license/LICENSE. + */ + +#include + +#define FATAL_ERROR_TEST_NAME "8" +#define FATAL_ERROR_DESCRIPTION "Core workspace too small" +#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE +#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_WORKSPACE_ALLOCATION + +static void force_error(void) +{ + _Workspace_Allocate_or_fatal_error( SIZE_MAX ); + /* we will not run this far */ +} + +#include "../spfatal_support/spfatalimpl.h" diff --git a/testsuites/sptests/spfatal08/testcase.h b/testsuites/sptests/spfatal08/testcase.h deleted file mode 100644 index 03e7ca5305..0000000000 --- a/testsuites/sptests/spfatal08/testcase.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Classic API Init task create failure - * - * 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.org/license/LICENSE. - */ - -#include - -#define FATAL_ERROR_TEST_NAME "8" -#define FATAL_ERROR_DESCRIPTION "Core workspace too small" -#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE -#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_WORKSPACE_ALLOCATION - -void force_error() -{ - _Workspace_Allocate_or_fatal_error( SIZE_MAX ); - /* we will not run this far */ -} diff --git a/testsuites/sptests/spfatal09/init.c b/testsuites/sptests/spfatal09/init.c new file mode 100644 index 0000000000..5aca7a9ea0 --- /dev/null +++ b/testsuites/sptests/spfatal09/init.c @@ -0,0 +1,32 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "../spfatal_support/spfatal.h" + +/* + * Malloc Initialization Error + * + * COPYRIGHT (c) 1989-2010. + * 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. + */ + +#include +#include + +#define FATAL_ERROR_TEST_NAME "9" +#define FATAL_ERROR_DESCRIPTION "Bad heap address to malloc" +#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE +#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_NO_MEMORY_FOR_HEAP + +static void force_error(void) +{ + RTEMS_Malloc_Initialize( NULL, 0, NULL ); + /* we will not run this far */ +} + +#include "../spfatal_support/spfatalimpl.h" diff --git a/testsuites/sptests/spfatal09/testcase.h b/testsuites/sptests/spfatal09/testcase.h deleted file mode 100644 index 07b03af206..0000000000 --- a/testsuites/sptests/spfatal09/testcase.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Malloc Initialization Error - * - * COPYRIGHT (c) 1989-2010. - * 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. - */ - -#include -#include - -#define FATAL_ERROR_TEST_NAME "9" -#define FATAL_ERROR_DESCRIPTION "Bad heap address to malloc" -#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE -#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_NO_MEMORY_FOR_HEAP - -void force_error() -{ - RTEMS_Malloc_Initialize( NULL, 0, NULL ); - /* we will not run this far */ -} diff --git a/testsuites/sptests/spfatal10/init.c b/testsuites/sptests/spfatal10/init.c new file mode 100644 index 0000000000..221f117f3a --- /dev/null +++ b/testsuites/sptests/spfatal10/init.c @@ -0,0 +1,48 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "../spfatal_support/spfatal.h" + +/* Test __assert_func with NULL function name + * + * COPYRIGHT (c) 1989-2009. + * 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. + */ + +#include +#include + +#define FATAL_ERROR_TEST_NAME "10" +#define FATAL_ERROR_DESCRIPTION "asserting with non-NULL strings..." +#define FATAL_ERROR_EXPECTED_SOURCE RTEMS_FATAL_SOURCE_ASSERT +#define FATAL_ERROR_EXPECTED_ERROR_CHECK spfatal10_is_expected_error + +#define ASSERT_FILE "testcase.h" +#define ASSERT_LINE 38 +#define ASSERT_FUNC "Init" +#define ASSERT_FEXP "forced" + +static inline bool spfatal10_is_expected_error( rtems_fatal_code error ) +{ + const rtems_assert_context *assert_context = + (const rtems_assert_context *) error; + + return strcmp( assert_context->file, ASSERT_FILE ) == 0 + && assert_context->line == ASSERT_LINE + && strcmp( assert_context->function, ASSERT_FUNC ) == 0 + && strcmp( assert_context->failed_expression, ASSERT_FEXP ) == 0; +} + +static void force_error(void) +{ + __assert_func( ASSERT_FILE, ASSERT_LINE, ASSERT_FUNC, ASSERT_FEXP ); + + /* we will not run this far */ +} + +#include "../spfatal_support/spfatalimpl.h" diff --git a/testsuites/sptests/spfatal10/testcase.h b/testsuites/sptests/spfatal10/testcase.h deleted file mode 100644 index df4125e7da..0000000000 --- a/testsuites/sptests/spfatal10/testcase.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Test __assert_func with NULL function name - * - * COPYRIGHT (c) 1989-2009. - * 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. - */ - -#include -#include - -#define FATAL_ERROR_TEST_NAME "10" -#define FATAL_ERROR_DESCRIPTION "asserting with non-NULL strings..." -#define FATAL_ERROR_EXPECTED_SOURCE RTEMS_FATAL_SOURCE_ASSERT -#define FATAL_ERROR_EXPECTED_ERROR_CHECK spfatal10_is_expected_error - -#define ASSERT_FILE "testcase.h" -#define ASSERT_LINE 38 -#define ASSERT_FUNC "Init" -#define ASSERT_FEXP "forced" - -static inline bool spfatal10_is_expected_error( rtems_fatal_code error ) -{ - const rtems_assert_context *assert_context = - (const rtems_assert_context *) error; - - return strcmp( assert_context->file, ASSERT_FILE ) == 0 - && assert_context->line == ASSERT_LINE - && strcmp( assert_context->function, ASSERT_FUNC ) == 0 - && strcmp( assert_context->failed_expression, ASSERT_FEXP ) == 0; -} - -void force_error() -{ - __assert_func( ASSERT_FILE, ASSERT_LINE, ASSERT_FUNC, ASSERT_FEXP ); - - /* we will not run this far */ -} diff --git a/testsuites/sptests/spfatal11/init.c b/testsuites/sptests/spfatal11/init.c new file mode 100644 index 0000000000..af1596d1b6 --- /dev/null +++ b/testsuites/sptests/spfatal11/init.c @@ -0,0 +1,48 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "../spfatal_support/spfatal.h" + +/* Test __assert_func with NULL function name + * + * COPYRIGHT (c) 1989-2009. + * 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. + */ + +#include +#include + +#define FATAL_ERROR_TEST_NAME "11" +#define FATAL_ERROR_DESCRIPTION "asserting with NULL strings..." +#define FATAL_ERROR_EXPECTED_SOURCE RTEMS_FATAL_SOURCE_ASSERT +#define FATAL_ERROR_EXPECTED_ERROR_CHECK spfatal11_is_expected_error + +#define ASSERT_FILE "testcase.h" +#define ASSERT_LINE 38 +#define ASSERT_FUNC NULL +#define ASSERT_FEXP "forced" + +static inline bool spfatal11_is_expected_error( rtems_fatal_code error ) +{ + const rtems_assert_context *assert_context = + (const rtems_assert_context *) error; + + return strcmp( assert_context->file, ASSERT_FILE ) == 0 + && assert_context->line == ASSERT_LINE + && assert_context->function == ASSERT_FUNC + && strcmp( assert_context->failed_expression, ASSERT_FEXP ) == 0; +} + +static void force_error(void) +{ + __assert_func( ASSERT_FILE, ASSERT_LINE, ASSERT_FUNC, ASSERT_FEXP ); + + /* we will not run this far */ +} + +#include "../spfatal_support/spfatalimpl.h" diff --git a/testsuites/sptests/spfatal11/testcase.h b/testsuites/sptests/spfatal11/testcase.h deleted file mode 100644 index ddd37a66fe..0000000000 --- a/testsuites/sptests/spfatal11/testcase.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Test __assert_func with NULL function name - * - * COPYRIGHT (c) 1989-2009. - * 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. - */ - -#include -#include - -#define FATAL_ERROR_TEST_NAME "11" -#define FATAL_ERROR_DESCRIPTION "asserting with NULL strings..." -#define FATAL_ERROR_EXPECTED_SOURCE RTEMS_FATAL_SOURCE_ASSERT -#define FATAL_ERROR_EXPECTED_ERROR_CHECK spfatal11_is_expected_error - -#define ASSERT_FILE "testcase.h" -#define ASSERT_LINE 38 -#define ASSERT_FUNC NULL -#define ASSERT_FEXP "forced" - -static inline bool spfatal11_is_expected_error( rtems_fatal_code error ) -{ - const rtems_assert_context *assert_context = - (const rtems_assert_context *) error; - - return strcmp( assert_context->file, ASSERT_FILE ) == 0 - && assert_context->line == ASSERT_LINE - && assert_context->function == ASSERT_FUNC - && strcmp( assert_context->failed_expression, ASSERT_FEXP ) == 0; -} - -void force_error() -{ - __assert_func( ASSERT_FILE, ASSERT_LINE, ASSERT_FUNC, ASSERT_FEXP ); - - /* we will not run this far */ -} diff --git a/testsuites/sptests/spfatal12/init.c b/testsuites/sptests/spfatal12/init.c new file mode 100644 index 0000000000..c3c1afdd78 --- /dev/null +++ b/testsuites/sptests/spfatal12/init.c @@ -0,0 +1,33 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "../spfatal_support/spfatal.h" + +/* Test __assert_func with NULL function name + * + * COPYRIGHT (c) 1989-2009. + * 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. + */ + +#include + +#define FATAL_ERROR_TEST_NAME "12" +#define FATAL_ERROR_DESCRIPTION \ + "_Heap_Initialize fails during RTEMS initialization" +#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE +#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_TOO_LITTLE_WORKSPACE + +static void force_error(void) +{ + Heap_Area area = { .begin = NULL, .size = 0 }; + + _Workspace_Handler_initialization( &area, 1, NULL ); + /* we will not run this far */ +} + +#include "../spfatal_support/spfatalimpl.h" diff --git a/testsuites/sptests/spfatal12/testcase.h b/testsuites/sptests/spfatal12/testcase.h deleted file mode 100644 index 8b3d40926c..0000000000 --- a/testsuites/sptests/spfatal12/testcase.h +++ /dev/null @@ -1,25 +0,0 @@ -/* Test __assert_func with NULL function name - * - * COPYRIGHT (c) 1989-2009. - * 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. - */ - -#include - -#define FATAL_ERROR_TEST_NAME "12" -#define FATAL_ERROR_DESCRIPTION \ - "_Heap_Initialize fails during RTEMS initialization" -#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE -#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_TOO_LITTLE_WORKSPACE - -void force_error() -{ - Heap_Area area = { .begin = NULL, .size = 0 }; - - _Workspace_Handler_initialization( &area, 1, NULL ); - /* we will not run this far */ -} diff --git a/testsuites/sptests/spfatal14/init.c b/testsuites/sptests/spfatal14/init.c new file mode 100644 index 0000000000..ffb1c491b6 --- /dev/null +++ b/testsuites/sptests/spfatal14/init.c @@ -0,0 +1,30 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "../spfatal_support/spfatal.h" + +/* + * COPYRIGHT (c) 1989-2010. + * 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. + */ + +/* generate fatal errors in open_dev_console.c */ + +#define FATAL_ERROR_TEST_NAME "14" +#define FATAL_ERROR_DESCRIPTION "fail to open stdout" +#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE +#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_LIBIO_STDOUT_FD_OPEN_FAILED + +#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 1 + +static void force_error(void) +{ + /* we will not run this far */ +} + +#include "../spfatal_support/spfatalimpl.h" diff --git a/testsuites/sptests/spfatal14/testcase.h b/testsuites/sptests/spfatal14/testcase.h deleted file mode 100644 index d280a17750..0000000000 --- a/testsuites/sptests/spfatal14/testcase.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * COPYRIGHT (c) 1989-2010. - * 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. - */ - -/* generate fatal errors in open_dev_console.c */ - -#define FATAL_ERROR_TEST_NAME "14" -#define FATAL_ERROR_DESCRIPTION "fail to open stdout" -#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE -#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_LIBIO_STDOUT_FD_OPEN_FAILED - -#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 1 - -void force_error() -{ - /* we will not run this far */ -} diff --git a/testsuites/sptests/spfatal15/init.c b/testsuites/sptests/spfatal15/init.c new file mode 100644 index 0000000000..fb8645849f --- /dev/null +++ b/testsuites/sptests/spfatal15/init.c @@ -0,0 +1,29 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "../spfatal_support/spfatal.h" + +/* + * COPYRIGHT (c) 1989-2010. + * 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. + */ + +/* generate fatal errors in open_dev_console.c */ +#define FATAL_ERROR_TEST_NAME "15" +#define FATAL_ERROR_DESCRIPTION "fail to open stderr" +#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE +#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_LIBIO_STDERR_FD_OPEN_FAILED + +#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 2 + +static void force_error(void) +{ + /* we will not run this far */ +} + +#include "../spfatal_support/spfatalimpl.h" diff --git a/testsuites/sptests/spfatal15/testcase.h b/testsuites/sptests/spfatal15/testcase.h deleted file mode 100644 index fc3d25f2db..0000000000 --- a/testsuites/sptests/spfatal15/testcase.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - * COPYRIGHT (c) 1989-2010. - * 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. - */ - -/* generate fatal errors in open_dev_console.c */ -#define FATAL_ERROR_TEST_NAME "15" -#define FATAL_ERROR_DESCRIPTION "fail to open stderr" -#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE -#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_LIBIO_STDERR_FD_OPEN_FAILED - -#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 2 - -void force_error() -{ - /* we will not run this far */ -} diff --git a/testsuites/sptests/spfatal24/init.c b/testsuites/sptests/spfatal24/init.c new file mode 100644 index 0000000000..6522ef7be2 --- /dev/null +++ b/testsuites/sptests/spfatal24/init.c @@ -0,0 +1,31 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "../spfatal_support/spfatal.h" + +/* + * COPYRIGHT (c) 1989-2010. + * 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. + */ + +#include +#include + +#define FATAL_ERROR_TEST_NAME "GXX KEY ADD FAILURE" +#define FATAL_ERROR_DESCRIPTION "GXX KEY ADD FAILURE" +#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE +#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_GXX_KEY_ADD_FAILED + +static void force_error(void) +{ + pthread_key_t key = -1; + + rtems_gxx_setspecific( &key, NULL ); +} + +#include "../spfatal_support/spfatalimpl.h" diff --git a/testsuites/sptests/spfatal24/testcase.h b/testsuites/sptests/spfatal24/testcase.h deleted file mode 100644 index 19a7547304..0000000000 --- a/testsuites/sptests/spfatal24/testcase.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * COPYRIGHT (c) 1989-2010. - * 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. - */ - -#include -#include - -#define FATAL_ERROR_TEST_NAME "GXX KEY ADD FAILURE" -#define FATAL_ERROR_DESCRIPTION "GXX KEY ADD FAILURE" -#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE -#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_GXX_KEY_ADD_FAILED - -void force_error() -{ - pthread_key_t key = -1; - - rtems_gxx_setspecific( &key, NULL ); -} diff --git a/testsuites/sptests/spfatal25/init.c b/testsuites/sptests/spfatal25/init.c new file mode 100644 index 0000000000..83042557e5 --- /dev/null +++ b/testsuites/sptests/spfatal25/init.c @@ -0,0 +1,33 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "../spfatal_support/spfatal.h" + +/* + * COPYRIGHT (c) 1989-2010. + * 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. + */ + +#include + +#define FATAL_ERROR_TEST_NAME "GXX MUTEX INIT FAILED" +#define FATAL_ERROR_DESCRIPTION "GXX MUTEX INIT FAILED" +#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE +#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_GXX_MUTEX_INIT_FAILED + +static void force_error(void) +{ + __gthread_mutex_t mutex; + + while ( true ) { + rtems_gxx_mutex_init( &mutex ); + rtems_test_assert( mutex != 0 ); + } +} + +#include "../spfatal_support/spfatalimpl.h" diff --git a/testsuites/sptests/spfatal25/testcase.h b/testsuites/sptests/spfatal25/testcase.h deleted file mode 100644 index c2c97e4744..0000000000 --- a/testsuites/sptests/spfatal25/testcase.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * COPYRIGHT (c) 1989-2010. - * 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. - */ - -#include - -#define FATAL_ERROR_TEST_NAME "GXX MUTEX INIT FAILED" -#define FATAL_ERROR_DESCRIPTION "GXX MUTEX INIT FAILED" -#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE -#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_GXX_MUTEX_INIT_FAILED - -void force_error() -{ - __gthread_mutex_t mutex; - - while ( true ) { - rtems_gxx_mutex_init( &mutex ); - rtems_test_assert( mutex != 0 ); - } -} diff --git a/testsuites/sptests/spfatal27/init.c b/testsuites/sptests/spfatal27/init.c new file mode 100644 index 0000000000..7f2cf8668f --- /dev/null +++ b/testsuites/sptests/spfatal27/init.c @@ -0,0 +1,34 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "../spfatal_support/spfatal.h" + +/* + * Copyright (c) 2014 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Dornierstrasse 4 + * 82178 Puchheim + * Germany + * + * + * 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. + */ + +#define FATAL_ERROR_TEST_NAME "27" +#define FATAL_ERROR_DESCRIPTION "libio init no posix key left" +#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE +#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_LIBIO_USER_ENV_KEY_CREATE_FAILED + +#define CONFIGURE_MAXIMUM_POSIX_KEYS (-1) +#define CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS (0) + +static void force_error(void) +{ + /* we should not reach this */ +} + +#include "../spfatal_support/spfatalimpl.h" diff --git a/testsuites/sptests/spfatal27/testcase.h b/testsuites/sptests/spfatal27/testcase.h deleted file mode 100644 index 9845959dcb..0000000000 --- a/testsuites/sptests/spfatal27/testcase.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (c) 2014 embedded brains GmbH. All rights reserved. - * - * embedded brains GmbH - * Dornierstrasse 4 - * 82178 Puchheim - * Germany - * - * - * 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. - */ - -#define FATAL_ERROR_TEST_NAME "27" -#define FATAL_ERROR_DESCRIPTION "libio init no posix key left" -#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE -#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_LIBIO_USER_ENV_KEY_CREATE_FAILED - -#define CONFIGURE_MAXIMUM_POSIX_KEYS (-1) -#define CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS (0) - -void force_error() -{ - /* we should not reach this */ -} diff --git a/testsuites/sptests/spfatal28/init.c b/testsuites/sptests/spfatal28/init.c new file mode 100644 index 0000000000..c827b297c3 --- /dev/null +++ b/testsuites/sptests/spfatal28/init.c @@ -0,0 +1,49 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "../spfatal_support/spfatal.h" + +/* + * Copyright (c) 2014 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Dornierstr. 4 + * 82178 Puchheim + * Germany + * + * + * 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. + */ + +#define FATAL_ERROR_TEST_NAME "28" +#define FATAL_ERROR_DESCRIPTION "delete a task with a semaphore in use" +#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE +#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_RESOURCE_IN_USE + +#define CONFIGURE_MAXIMUM_SEMAPHORES 1 + +static void force_error(void) +{ +#if defined(RTEMS_SCORE_THREAD_ENABLE_RESOURCE_COUNT) + rtems_status_code sc; + rtems_id id; + + sc = rtems_semaphore_create( + rtems_build_name('S', 'E', 'M', 'A'), + 0, + RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY | RTEMS_INHERIT_PRIORITY, + 0, + &id + ); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + + rtems_task_exit(); +#else + _Terminate( INTERNAL_ERROR_CORE, INTERNAL_ERROR_RESOURCE_IN_USE ); +#endif +} + +#include "../spfatal_support/spfatalimpl.h" diff --git a/testsuites/sptests/spfatal28/testcase.h b/testsuites/sptests/spfatal28/testcase.h deleted file mode 100644 index 8797ae0fe9..0000000000 --- a/testsuites/sptests/spfatal28/testcase.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) 2014 embedded brains GmbH. All rights reserved. - * - * embedded brains GmbH - * Dornierstr. 4 - * 82178 Puchheim - * Germany - * - * - * 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. - */ - -#define FATAL_ERROR_TEST_NAME "28" -#define FATAL_ERROR_DESCRIPTION "delete a task with a semaphore in use" -#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE -#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_RESOURCE_IN_USE - -#define CONFIGURE_MAXIMUM_SEMAPHORES 1 - -void force_error() -{ -#if defined(RTEMS_SCORE_THREAD_ENABLE_RESOURCE_COUNT) - rtems_status_code sc; - rtems_id id; - - sc = rtems_semaphore_create( - rtems_build_name('S', 'E', 'M', 'A'), - 0, - RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY | RTEMS_INHERIT_PRIORITY, - 0, - &id - ); - rtems_test_assert(sc == RTEMS_SUCCESSFUL); - - rtems_task_exit(); -#else - _Terminate( INTERNAL_ERROR_CORE, INTERNAL_ERROR_RESOURCE_IN_USE ); -#endif -} diff --git a/testsuites/sptests/spfatal29/init.c b/testsuites/sptests/spfatal29/init.c new file mode 100644 index 0000000000..439eeef7ac --- /dev/null +++ b/testsuites/sptests/spfatal29/init.c @@ -0,0 +1,52 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "../spfatal_support/spfatal.h" + +/* + * Copyright (c) 2016 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Dornierstr. 4 + * 82178 Puchheim + * Germany + * + * + * 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. + */ + +#define FATAL_ERROR_TEST_NAME "29" +#define FATAL_ERROR_DESCRIPTION "yield in interrupt context" +#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE +#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_BAD_THREAD_DISPATCH_DISABLE_LEVEL + +#define CONFIGURE_MAXIMUM_TIMERS 1 + +#define CONFIGURE_DISABLE_SMP_CONFIGURATION + +static void timer(rtems_id id, void *arg) +{ + rtems_task_wake_after(RTEMS_YIELD_PROCESSOR); +} + +static void force_error(void) +{ + rtems_status_code sc; + rtems_id id; + + sc = rtems_timer_create( + rtems_build_name('T', 'I', 'M', 'E'), + &id + ); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + + sc = rtems_timer_fire_after(id, 1, timer, NULL); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + + rtems_task_exit(); +} + +#include "../spfatal_support/spfatalimpl.h" diff --git a/testsuites/sptests/spfatal29/testcase.h b/testsuites/sptests/spfatal29/testcase.h deleted file mode 100644 index 69bbc80925..0000000000 --- a/testsuites/sptests/spfatal29/testcase.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2016 embedded brains GmbH. All rights reserved. - * - * embedded brains GmbH - * Dornierstr. 4 - * 82178 Puchheim - * Germany - * - * - * 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. - */ - -#define FATAL_ERROR_TEST_NAME "29" -#define FATAL_ERROR_DESCRIPTION "yield in interrupt context" -#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE -#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_BAD_THREAD_DISPATCH_DISABLE_LEVEL - -#define CONFIGURE_MAXIMUM_TIMERS 1 - -#define CONFIGURE_DISABLE_SMP_CONFIGURATION - -static void timer(rtems_id id, void *arg) -{ - rtems_task_wake_after(RTEMS_YIELD_PROCESSOR); -} - -void force_error() -{ - rtems_status_code sc; - rtems_id id; - - sc = rtems_timer_create( - rtems_build_name('T', 'I', 'M', 'E'), - &id - ); - rtems_test_assert(sc == RTEMS_SUCCESSFUL); - - sc = rtems_timer_fire_after(id, 1, timer, NULL); - rtems_test_assert(sc == RTEMS_SUCCESSFUL); - - rtems_task_exit(); -} diff --git a/testsuites/sptests/spfatal32/init.c b/testsuites/sptests/spfatal32/init.c new file mode 100644 index 0000000000..c4851cbd6f --- /dev/null +++ b/testsuites/sptests/spfatal32/init.c @@ -0,0 +1,35 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "../spfatal_support/spfatal.h" + +/* + * Copyright (c) 2018 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Dornierstr. 4 + * 82178 Puchheim + * Germany + * + * + * 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. + */ + +#include +#include + +#define FATAL_ERROR_TEST_NAME "32" +#define FATAL_ERROR_DESCRIPTION "invalid free of heap memory" +#define FATAL_ERROR_EXPECTED_SOURCE RTEMS_FATAL_SOURCE_INVALID_HEAP_FREE +#define FATAL_ERROR_EXPECTED_ERROR 1 + +static void force_error(void) +{ + uintptr_t invalid = 1; + free((void *) invalid); +} + +#include "../spfatal_support/spfatalimpl.h" diff --git a/testsuites/sptests/spfatal32/testcase.h b/testsuites/sptests/spfatal32/testcase.h deleted file mode 100644 index 8e77062f94..0000000000 --- a/testsuites/sptests/spfatal32/testcase.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2018 embedded brains GmbH. All rights reserved. - * - * embedded brains GmbH - * Dornierstr. 4 - * 82178 Puchheim - * Germany - * - * - * 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. - */ - -#include -#include - -#define FATAL_ERROR_TEST_NAME "32" -#define FATAL_ERROR_DESCRIPTION "invalid free of heap memory" -#define FATAL_ERROR_EXPECTED_SOURCE RTEMS_FATAL_SOURCE_INVALID_HEAP_FREE -#define FATAL_ERROR_EXPECTED_ERROR 1 - -void force_error() -{ - uintptr_t invalid = 1; - free((void *) invalid); -} diff --git a/testsuites/sptests/spfatal_support/init.c b/testsuites/sptests/spfatal_support/init.c deleted file mode 100644 index e5aae95027..0000000000 --- a/testsuites/sptests/spfatal_support/init.c +++ /dev/null @@ -1,144 +0,0 @@ -/* - * COPYRIGHT (c) 1989-2011. - * 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. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include - -#include - -rtems_task Init( rtems_task_argument argument ); - -void force_error( void ); - -#include "testcase.h" - -const char rtems_test_name[] = "SPFATAL " FATAL_ERROR_TEST_NAME; - -static void print_test_begin_message(void) -{ - static bool done = false; - - if (!done) { - done = true; - TEST_BEGIN(); - } -} - -rtems_task Init( - rtems_task_argument argument -) -{ - print_test_begin_message(); - force_error(); - printk( "Fatal error (%s) NOT hit\n", FATAL_ERROR_DESCRIPTION ); - rtems_test_exit(0); -} - -#ifdef FATAL_ERROR_EXPECTED_ERROR -static void Put_Error( uint32_t source, uint32_t error ) -{ - if ( source == INTERNAL_ERROR_CORE ) { - printk( rtems_internal_error_text( error ) ); - } - else if (source == INTERNAL_ERROR_RTEMS_API ){ - if (error > RTEMS_NOT_IMPLEMENTED ) - printk("Unknown Internal RTEMS Error (0x%08" PRIx32 ")", error); - else - printk( "%s", rtems_status_text( error ) ); - } -} -#endif - -static void Put_Source( rtems_fatal_source source ) -{ - printk( "%s", rtems_fatal_source_text( source ) ); -} - -static bool is_expected_error( rtems_fatal_code error ) -{ -#ifdef FATAL_ERROR_EXPECTED_ERROR - return error == FATAL_ERROR_EXPECTED_ERROR; -#else /* FATAL_ERROR_EXPECTED_ERROR */ - return FATAL_ERROR_EXPECTED_ERROR_CHECK( error ); -#endif /* FATAL_ERROR_EXPECTED_ERROR */ -} - -static void Fatal_extension( - rtems_fatal_source source, - bool always_set_to_false, - rtems_fatal_code error -) -{ - print_test_begin_message(); - 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 ( always_set_to_false ) - printk( - "ERROR==> Fatal Extension is internal set to true expected false\n" - ); - -#ifdef FATAL_ERROR_EXPECTED_ERROR - 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" ); - } -#endif /* FATAL_ERROR_EXPECTED_ERROR */ - - if ( - source == FATAL_ERROR_EXPECTED_SOURCE - && !always_set_to_false - && is_expected_error( error ) - ) { - TEST_END(); - } -} - -#define CONFIGURE_INIT - -#define CONFIGURE_INITIAL_EXTENSIONS \ - { \ - NULL, /* create */ \ - NULL, /* start */ \ - NULL, /* restart */ \ - NULL, /* delete */ \ - NULL, /* switch */ \ - NULL, /* begin */ \ - NULL, /* exitted */ \ - Fatal_extension /* fatal */ \ - }, \ - RTEMS_TEST_INITIAL_EXTENSION - -/* extra parameters may be in testcase.h */ -#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_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 diff --git a/testsuites/sptests/spfatal_support/spfatal.h b/testsuites/sptests/spfatal_support/spfatal.h new file mode 100644 index 0000000000..2a49ca2e54 --- /dev/null +++ b/testsuites/sptests/spfatal_support/spfatal.h @@ -0,0 +1,14 @@ +/* + * COPYRIGHT (c) 1989-2011. + * 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. + */ + +#include + +#include + +rtems_task Init( rtems_task_argument argument ); diff --git a/testsuites/sptests/spfatal_support/spfatalimpl.h b/testsuites/sptests/spfatal_support/spfatalimpl.h new file mode 100644 index 0000000000..83f0d25ab7 --- /dev/null +++ b/testsuites/sptests/spfatal_support/spfatalimpl.h @@ -0,0 +1,136 @@ +/* + * COPYRIGHT (c) 1989-2011. + * 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. + */ + +#include + +#include + +rtems_task Init( rtems_task_argument argument ); + +const char rtems_test_name[] = "SPFATAL " FATAL_ERROR_TEST_NAME; + +static void print_test_begin_message(void) +{ + static bool done = false; + + if (!done) { + done = true; + TEST_BEGIN(); + } +} + +rtems_task Init( + rtems_task_argument argument +) +{ + print_test_begin_message(); + force_error(); + printk( "Fatal error (%s) NOT hit\n", FATAL_ERROR_DESCRIPTION ); + rtems_test_exit(0); +} + +#ifdef FATAL_ERROR_EXPECTED_ERROR +static void Put_Error( uint32_t source, uint32_t error ) +{ + if ( source == INTERNAL_ERROR_CORE ) { + printk( rtems_internal_error_text( error ) ); + } + else if (source == INTERNAL_ERROR_RTEMS_API ){ + if (error > RTEMS_NOT_IMPLEMENTED ) + printk("Unknown Internal RTEMS Error (0x%08" PRIx32 ")", error); + else + printk( "%s", rtems_status_text( error ) ); + } +} +#endif + +static void Put_Source( rtems_fatal_source source ) +{ + printk( "%s", rtems_fatal_source_text( source ) ); +} + +static bool is_expected_error( rtems_fatal_code error ) +{ +#ifdef FATAL_ERROR_EXPECTED_ERROR + return error == FATAL_ERROR_EXPECTED_ERROR; +#else /* FATAL_ERROR_EXPECTED_ERROR */ + return FATAL_ERROR_EXPECTED_ERROR_CHECK( error ); +#endif /* FATAL_ERROR_EXPECTED_ERROR */ +} + +static void Fatal_extension( + rtems_fatal_source source, + bool always_set_to_false, + rtems_fatal_code error +) +{ + print_test_begin_message(); + 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 ( always_set_to_false ) + printk( + "ERROR==> Fatal Extension is internal set to true expected false\n" + ); + +#ifdef FATAL_ERROR_EXPECTED_ERROR + 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" ); + } +#endif /* FATAL_ERROR_EXPECTED_ERROR */ + + if ( + source == FATAL_ERROR_EXPECTED_SOURCE + && !always_set_to_false + && is_expected_error( error ) + ) { + TEST_END(); + } +} + +#define CONFIGURE_INIT + +#define CONFIGURE_INITIAL_EXTENSIONS \ + { \ + NULL, /* create */ \ + NULL, /* start */ \ + NULL, /* restart */ \ + NULL, /* delete */ \ + NULL, /* switch */ \ + NULL, /* begin */ \ + NULL, /* exitted */ \ + Fatal_extension /* fatal */ \ + }, \ + RTEMS_TEST_INITIAL_EXTENSION + +/* extra parameters may be in testcase.h */ +#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_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 -- cgit v1.2.3