diff options
Diffstat (limited to 'c/src/tests/sptests/spfatal/fatal.c')
-rw-r--r-- | c/src/tests/sptests/spfatal/fatal.c | 134 |
1 files changed, 0 insertions, 134 deletions
diff --git a/c/src/tests/sptests/spfatal/fatal.c b/c/src/tests/sptests/spfatal/fatal.c deleted file mode 100644 index 3b2228bffd..0000000000 --- a/c/src/tests/sptests/spfatal/fatal.c +++ /dev/null @@ -1,134 +0,0 @@ -/* Fatal Error Test - * - * NOTE: - * - * This test actually modifies the Configuration table and restarts - * the executive. It is very carefully constructed to do this and - * uses the Configuration very carefully. - * - * COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994. - * On-Line Applications Research Corporation (OAR). - * All rights assigned to U.S. Government, 1994. - * - * This material may be reproduced by or for the U.S. Government pursuant - * to the copyright license under the clause at DFARS 252.227-7013. This - * notice must appear in all copies of this file and its derivatives. - * - * $Id$ - */ - -#include "system.h" - -#include <setjmp.h> - -char Workspace[ 64 * 1024 ] CPU_STRUCTURE_ALIGNMENT; - -typedef enum { - FATAL_WORKSPACE_OF_ZERO, - FATAL_NULL_WORKSPACE, - FATAL_WORKSPACE_TOO_SMALL, - FATAL_TASK_CREATE, - FATAL_TASK_START -} Fatal_errors_t; - -#define FATAL_LAST FATAL_TASK_START - -volatile Fatal_errors_t Case_in_switch; - -rtems_status_code Expected_Errors[] = { - RTEMS_UNSATISFIED, - RTEMS_INVALID_ADDRESS, - RTEMS_UNSATISFIED, - RTEMS_INVALID_PRIORITY, - RTEMS_TASK_EXITTED -}; - -rtems_status_code Error_Happened[ FATAL_LAST + 1]; - -jmp_buf Restart_Context; - -/* - * We depend on this being zeroed during initialization. This - * occurs automatically because this is part of the BSS. - */ - -rtems_unsigned32 First_Time_Through; - -void Process_case(); - -rtems_extension Fatal_extension( - rtems_unsigned32 error -) -{ - int index; - - Error_Happened[ Case_in_switch ] = error; - - if ( First_Time_Through == 0 ) { - Case_in_switch = FATAL_WORKSPACE_OF_ZERO; - First_Time_Through = 1; - setjmp( Restart_Context ); - } else if ( Case_in_switch == FATAL_LAST ) { - - /* - * Depending on the C library we use, we cannot get the - * task exitted error so do not check for it. - */ - - puts( "*** TEST FATAL ***" ); - for ( index=0 ; index< FATAL_LAST ; index++ ) - put_error( Error_Happened[ index ], Expected_Errors[ index ] ); - puts( "NOT TESTING FATAL ERROR WHEN TASK EXITS -- C LIBRARY CATCHES THIS" ); - puts( "*** END OF TEST FATAL ***" ); - - /* - * returns to the default fatal error handler instead of - * calling rtems_shutdown_executive - */ - return; - - } else { - - longjmp( Restart_Context, 1 ); - } - - Process_case(); -} - - - -void Process_case() -{ - switch ( Case_in_switch ) { - case FATAL_WORKSPACE_OF_ZERO: - New_Configuration = BSP_Configuration; - New_Configuration.work_space_start = NULL; - Case_in_switch = FATAL_NULL_WORKSPACE; - break; - - case FATAL_NULL_WORKSPACE: - New_Configuration.work_space_start = Workspace; - New_Configuration.work_space_size = 256; - Case_in_switch = FATAL_WORKSPACE_TOO_SMALL; - break; - - case FATAL_WORKSPACE_TOO_SMALL: - Initialization_tasks[ 0 ].initial_priority = RTEMS_CURRENT_PRIORITY; - New_Configuration.work_space_size = sizeof( Workspace ); - Case_in_switch = FATAL_TASK_CREATE; - break; - - case FATAL_TASK_CREATE: - Initialization_tasks[ 0 ].initial_priority = 1; - Initialization_tasks[ 0 ].entry_point = NULL; - Case_in_switch = FATAL_TASK_START; - break; - - case FATAL_TASK_START: - /* this extension exits the test */ - Initialization_tasks[ 0 ].entry_point = Init; - break; - } - rtems_initialize_executive( &New_Configuration, &Cpu_table ); -} - |