From 00bf76eaa7b228598a0e45a5874b2047c9784b7d Mon Sep 17 00:00:00 2001 From: Andrew Boie Date: Tue, 6 Aug 2019 12:10:49 -0700 Subject: [PATCH] kernel: add z_fatal_halt() to interface Intended to be called from application-level implementations of k_sys_fatal_error_handler(). Signed-off-by: Andrew Boie --- include/fatal.h | 10 ++++++++++ kernel/fatal.c | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/include/fatal.h b/include/fatal.h index e1b5d85586a..35bc71c10bb 100644 --- a/include/fatal.h +++ b/include/fatal.h @@ -31,6 +31,16 @@ enum k_fatal_error_reason { */ }; +/** + * @brief 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 interupts and sit in an idle loop. + * + * @param reason Fatal exception reason code + */ +FUNC_NORETURN void k_fatal_halt(unsigned int reason); + /** * @brief Fatal error policy handler * diff --git a/kernel/fatal.c b/kernel/fatal.c index 167a5f63f5b..3ac3f8bc25a 100644 --- a/kernel/fatal.c +++ b/kernel/fatal.c @@ -95,6 +95,11 @@ void z_fatal_print(const char *fmt, ...) } #endif /* CONFIG_LOG || CONFIG_PRINTK */ +FUNC_NORETURN void k_fatal_halt(unsigned int reason) +{ + z_arch_system_halt(reason); +} + void z_fatal_error(unsigned int reason, const z_arch_esf_t *esf) { struct k_thread *thread = k_current_get();