839e52ac32
* Furi: remove CMSIS thread api, migrate to FuriThread, remove unused CMSIS APIs * Furi: magic thread catcher validating thread completion; backtrace improver * Furi: allow furi_thread_get_current_id outside of thread context * Furi: use IRQ instead of ISR for core primitives
33 lines
736 B
C
33 lines
736 B
C
#pragma once
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#define FURI_NORETURN [[noreturn]]
|
|
#else
|
|
#include <stdnoreturn.h>
|
|
#define FURI_NORETURN noreturn
|
|
#endif
|
|
|
|
/** Check condition and crash if check failed */
|
|
#define furi_check(__e) ((__e) ? (void)0 : furi_crash("furi_check failed\r\n"))
|
|
|
|
/** Only in debug build: Assert condition and crash if assert failed */
|
|
#ifdef FURI_DEBUG
|
|
#define furi_assert(__e) ((__e) ? (void)0 : furi_crash("furi_assert failed\r\n"))
|
|
#else
|
|
#define furi_assert(__e) \
|
|
do { \
|
|
((void)(__e)); \
|
|
} while(0)
|
|
#endif
|
|
|
|
/** Crash system */
|
|
FURI_NORETURN void furi_crash(const char* message);
|
|
|
|
/** Halt system */
|
|
FURI_NORETURN void furi_halt(const char* message);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|