1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00

core: use enums for panic

This commit is contained in:
Oleg Hahm 2015-08-26 16:01:04 +02:00
parent 9cb38cb681
commit e2639d7f83
6 changed files with 30 additions and 23 deletions

View File

@ -28,6 +28,29 @@
extern "C" {
#endif
/**
* @brief Definition of available panic modes
*/
typedef enum {
PANIC_GENERAL_ERROR,
PANIC_SOFT_REBOOT,
PANIC_HARD_REBOOT,
PANIC_ASSERT_FAIL,
#ifdef MODULE_CORTEXM_COMMON
PANIC_NMI_HANDLER, /**< non maskable interrupt */
PANIC_HARD_FAULT, /**< hard fault */
#if defined(CPU_ARCH_CORTEX_M3) || defined(CPU_ARCH_CORTEX_M4) || \
defined(CPU_ARCH_CORTEX_M4F)
PANIC_MEM_MANAGE, /**< memory controller interrupt */
PANIC_BUS_FAULT, /**< bus fault */
PANIC_USAGE_FAULT, /**< undefined instruction or unaligned access */
PANIC_DEBUG_MON, /**< debug interrupt */
#endif
PANIC_DUMMY_HANDLER, /**< unhandled interrupt */
#endif
PANIC_UNDEFINED
} core_panic_t;
/**
* @brief Handle an unrecoverable error by halting or rebooting the system
*
@ -48,7 +71,7 @@
*
* @return this function never returns
* */
NORETURN void core_panic(int crash_code, const char *message);
NORETURN void core_panic(core_panic_t crash_code, const char *message);
#ifdef __cplusplus
}

View File

@ -38,7 +38,7 @@
static int crashed = 0;
/* WARNING: this function NEVER returns! */
NORETURN void core_panic(int crash_code, const char *message)
NORETURN void core_panic(core_panic_t crash_code, const char *message)
{
(void) crash_code;

View File

@ -90,22 +90,6 @@ extern "C" {
#define ARCH_HAS_ATOMIC_COMPARE_AND_SWAP 1
#endif
/**
* @brief Definition of available panic modes
*/
typedef enum {
PANIC_NMI_HANDLER, /**< non maskable interrupt */
PANIC_HARD_FAULT, /**< hard fault */
#if defined(CPU_ARCH_CORTEX_M3) || defined(CPU_ARCH_CORTEX_M4) || \
defined(CPU_ARCH_CORTEX_M4F)
PANIC_MEM_MANAGE, /**< memory controller interrupt */
PANIC_BUS_FAULT, /**< bus fault */
PANIC_USAGE_FAULT, /**< undefined instruction or unaligned access */
PANIC_DEBUG_MON, /**< debug interrupt */
#endif
PANIC_DUMMY_HANDLER, /**< unhandled interrupt */
} panic_t;
/**
* @brief Initialization of the CPU
*/

View File

@ -539,7 +539,7 @@ void I2C_0_ERR_ISR(void)
if (state & I2C_ISR_ALERT) {
DEBUG("SMBALERT\n");
}
core_panic(0x0,"I2C FAULT");
core_panic(PANIC_GENERAL_ERROR, "I2C FAULT");
}
#endif /* I2C_0_EN */

View File

@ -170,7 +170,7 @@ void kw2xrf_set_sequence(kw2xrf_t *dev, kw2xrf_physeq_t seq)
/* At 10MHz SPI-Clock, 40000 should be in the magnitue of 0.1s */
if (max_tries == 40000) {
DEBUG("kw2xrf_error: device does not finish sequence\n");
core_panic(-EBUSY, "kw2xrf_error: device does not finish sequence");
core_panic(PANIC_GENERAL_ERROR, "kw2xrf_error: device does not finish sequence");
}
#endif
@ -397,7 +397,7 @@ int kw2xrf_init(kw2xrf_t *dev, spi_t spi, spi_speed_t spi_speed,
kw2xrf_spi_init(spi, spi_speed, cs_pin);
if (kw2xrf_on(dev) != 0) {
core_panic(0x42, "Could not start MKW2XD radio transceiver");
core_panic(PANIC_GENERAL_ERROR, "Could not start MKW2XD radio transceiver");
}
/* General initialization of interrupt sources.

View File

@ -42,7 +42,7 @@ void *__dso_handle __attribute__((weak)) = NULL;
*/
extern "C" void __cxa_pure_virtual ()
{
core_panic(123, "PURE VIRTUAL CALL");
core_panic(PANIC_GENERAL_ERROR, "PURE VIRTUAL CALL");
}
/**
@ -81,7 +81,7 @@ namespace __gnu_cxx {
*/
void __verbose_terminate_handler()
{
core_panic(123, "UNHANDLED C++ EXCEPTION");
core_panic(PANIC_GENERAL_ERROR, "UNHANDLED C++ EXCEPTION");
}
} /* namespace __gnu_cxx */