Sebastian Huber created an issue: 
https://gitlab.rtems.org/rtems/rtos/rtems/-/issues/5067

Assignee: Sebastian Huber

## Summary

The system termination procedure is implemented like this:

```c
void _Terminate(
  Internal_errors_Source the_source,
  Internal_errors_t      the_error
)
{
  _User_extensions_Fatal( the_source, the_error );
  _System_state_Set( SYSTEM_STATE_TERMINATED );
  _SMP_Request_shutdown();
  _CPU_Fatal_halt( the_source, the_error );
}
```

However, the `_User_extensions_Fatal()` should not return for properly 
configured applications. The `_Terminate()` implementation should be simplified 
to ease testing and code coverage.

```c
void _Terminate(
  Internal_errors_Source the_source,
  Internal_errors_t      the_error
)
{
  _User_extensions_Fatal( the_source, the_error );

  /*
   * Everything after invoking the fatal extensions is essentially dead code.
   * At least one fatal extension of the initial extension sets should not
   * return and for example reset the system.  See section "System Termination
   * Procedure" in the RTEMS Classic API Guide.
   *
   * The following code is only executed in badly applications.
   */
  _CPU_Thread_Idle_body( 0 );
}
```

-- 
View it on GitLab: https://gitlab.rtems.org/rtems/rtos/rtems/-/issues/5067
You're receiving this email because of your account on gitlab.rtems.org.


_______________________________________________
bugs mailing list
[email protected]
http://lists.rtems.org/mailman/listinfo/bugs

Reply via email to