Zephyr API Documentation  2.7.0-rc2
A Scalable Open Source RTOS
Fatal error APIs

Enumerations

enum  k_fatal_error_reason {
  K_ERR_CPU_EXCEPTION , K_ERR_SPURIOUS_IRQ , K_ERR_STACK_CHK_FAIL , K_ERR_KERNEL_OOPS ,
  K_ERR_KERNEL_PANIC
}
 

Functions

FUNC_NORETURN void k_fatal_halt (unsigned int reason)
 Halt the system on a fatal error. More...
 
void k_sys_fatal_error_handler (unsigned int reason, const z_arch_esf_t *esf)
 Fatal error policy handler. More...
 

Detailed Description

Enumeration Type Documentation

◆ k_fatal_error_reason

#include <include/fatal.h>

Enumerator
K_ERR_CPU_EXCEPTION 

Generic CPU exception, not covered by other codes

K_ERR_SPURIOUS_IRQ 

Unhandled hardware interrupt

K_ERR_STACK_CHK_FAIL 

Faulting context overflowed its stack buffer

K_ERR_KERNEL_OOPS 

Moderate severity software error

K_ERR_KERNEL_PANIC 

High severity software error

Function Documentation

◆ k_fatal_halt()

FUNC_NORETURN void k_fatal_halt ( unsigned int  reason)

#include <include/fatal.h>

Halt the system on a fatal error.

Invokes architecture-specific code to power off or halt the system in a low power state. Lacking that, lock interrupts and sit in an idle loop.

Parameters
reasonFatal exception reason code

◆ k_sys_fatal_error_handler()

void k_sys_fatal_error_handler ( unsigned int  reason,
const z_arch_esf_t *  esf 
)

#include <include/fatal.h>

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.
Parameters
reasonThe reason for the fatal error
esfException context, with details and partial or full register state when the error occurred. May in some cases be NULL.