zephyr::raw

Function k_sys_fatal_error_handler

source
pub unsafe extern "C" fn k_sys_fatal_error_handler(
    reason: u32,
    esf: *const arch_esf,
)
Expand description

@brief Fatal error policy handler

This function is not invoked by application code, but is declared as a weak symbol so that applications may introduce their own policy.

The default implementation of this function halts the system unconditionally. Depending on architecture support, this may be a simple infinite loop, power off the hardware, or exit an emulator.

If this function returns, then the currently executing thread will be aborted.

A few notes for custom implementations:

  • If the error is determined to be unrecoverable, LOG_PANIC() should be invoked to flush any pending logging buffers.
  • K_ERR_KERNEL_PANIC indicates a severe unrecoverable error in the kernel itself, and should not be considered recoverable. There is an assertion in z_fatal_error() to enforce this.
  • Even outside of a kernel panic, unless the fault occurred in user mode, the kernel itself may be in an inconsistent state, with API calls to kernel objects possibly exhibiting undefined behavior or triggering another exception.

@param reason The reason for the fatal error @param esf Exception context, with details and partial or full register state when the error occurred. May in some cases be NULL.