Example #1
0
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
  );
}
Example #2
0
/*
 * 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();
}
Example #3
0
void rtems_shutdown_executive(
   uint32_t   result
)
{
  if ( !_System_state_Is_shutdown( _System_state_Get() ) ) {
    _System_state_Set( SYSTEM_STATE_SHUTDOWN );
    _Thread_Stop_multitasking();
  }
}
Example #4
0
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();
}
Example #5
0
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();
}