56 lines
1.0 KiB
C
56 lines
1.0 KiB
C
/*
|
|
* Copyright (c) 2019 Nordic Semiconductor ASA
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#include <zephyr/sys/__assert.h>
|
|
#include <zephyr/sys/printk.h>
|
|
#include <zephyr/kernel.h>
|
|
|
|
|
|
/**
|
|
* @brief Assert Action Handler
|
|
*
|
|
* This routine implements the action to be taken when an assertion fails.
|
|
*
|
|
* System designers may wish to substitute this implementation to take other
|
|
* actions, such as logging program counter, line number, debug information
|
|
* to a persistent repository and/or rebooting the system.
|
|
*
|
|
* @param N/A
|
|
*/
|
|
#ifdef CONFIG_ASSERT_NO_FILE_INFO
|
|
__weak void assert_post_action(void)
|
|
#else
|
|
__weak void assert_post_action(const char *file, unsigned int line)
|
|
#endif
|
|
{
|
|
#ifndef CONFIG_ASSERT_NO_FILE_INFO
|
|
ARG_UNUSED(file);
|
|
ARG_UNUSED(line);
|
|
#endif
|
|
|
|
#ifdef CONFIG_USERSPACE
|
|
/* User threads aren't allowed to induce kernel panics; generate
|
|
* an oops instead.
|
|
*/
|
|
if (k_is_user_context()) {
|
|
k_oops();
|
|
}
|
|
#endif
|
|
|
|
k_panic();
|
|
}
|
|
|
|
void assert_print(const char *fmt, ...)
|
|
{
|
|
va_list ap;
|
|
|
|
va_start(ap, fmt);
|
|
|
|
vprintk(fmt, ap);
|
|
|
|
va_end(ap);
|
|
}
|