void rtems_shutdown_executive( uint32_t result ) { if ( _System_state_Is_up( _System_state_Get() ) ) { #if defined(RTEMS_SMP) _SMP_Request_other_cores_to_shutdown(); #endif _Per_CPU_Information[0].idle->Wait.return_code = result; _System_state_Set( SYSTEM_STATE_SHUTDOWN ); _Thread_Stop_multitasking(); /******************************************************************* ******************************************************************* ****** RETURN TO RTEMS_INITIALIZE_START_MULTITASKING() ****** ****** AND THEN TO BOOT_CARD() ****** ******************************************************************* *******************************************************************/ } _Internal_error_Occurred( INTERNAL_ERROR_CORE, true, INTERNAL_ERROR_SHUTDOWN_WHEN_NOT_UP ); }
/* * This fatal extension adds some bytes to the absolute minimum, but it * prevents the _CPU_Fatal_halt(). */ static void Fatal_extension( uint32_t source, bool is_internal, uint32_t error ) { _Thread_Stop_multitasking(); }
void rtems_shutdown_executive( uint32_t result ) { if ( !_System_state_Is_shutdown( _System_state_Get() ) ) { _System_state_Set( SYSTEM_STATE_SHUTDOWN ); _Thread_Stop_multitasking(); } }
void Fatal_extension( uint32_t source, bool is_internal, uint32_t error ) { if ( source != INTERNAL_ERROR_RTEMS_API ) { printk( "unexpected fatal source\n" ); } else if ( is_internal ) { printk( "unexpected fatal is internal\n" ); } else if ( error != 0x81 ) { printk( "unexpected fatal error\n" ); } else { printk( "*** END OF TEST STACK CHECKER ***\n" ); } if ( _System_state_Is_up( _System_state_Get() ) ) _Thread_Stop_multitasking(); }
void Fatal_extension( uint32_t source, bool is_internal, uint32_t 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 ( 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" ); } if ( source == FATAL_ERROR_EXPECTED_SOURCE && is_internal == FATAL_ERROR_EXPECTED_IS_INTERNAL && error == FATAL_ERROR_EXPECTED_ERROR ) { printk( "*** END OF TEST FATAL " FATAL_ERROR_TEST_NAME " ***\n" ); } if ( _System_state_Is_up( _System_state_Get() ) ) _Thread_Stop_multitasking(); }