mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
991 B
55 lines
991 B
/* |
|
* linux/lib/vsprintf.c |
|
* |
|
* Copyright (C) 1991, 1992 Linus Torvalds |
|
*/ |
|
|
|
/* vsprintf.c -- Lars Wirzenius & Linus Torvalds. */ |
|
/* |
|
* Wirzenius wrote this portably, Torvalds fucked it up :-) |
|
*/ |
|
|
|
#include <common.h> |
|
#if !defined(CONFIG_PANIC_HANG) |
|
#include <command.h> |
|
#endif |
|
|
|
static void panic_finish(void) __attribute__ ((noreturn)); |
|
|
|
static void panic_finish(void) |
|
{ |
|
putc('\n'); |
|
#if defined(CONFIG_PANIC_HANG) |
|
hang(); |
|
#else |
|
udelay(100000); /* allow messages to go out */ |
|
do_reset(NULL, 0, 0, NULL); |
|
#endif |
|
while (1) |
|
; |
|
} |
|
|
|
void panic_str(const char *str) |
|
{ |
|
puts(str); |
|
panic_finish(); |
|
} |
|
|
|
void panic(const char *fmt, ...) |
|
{ |
|
#if CONFIG_IS_ENABLED(PRINTF) |
|
va_list args; |
|
va_start(args, fmt); |
|
vprintf(fmt, args); |
|
va_end(args); |
|
#endif |
|
panic_finish(); |
|
} |
|
|
|
void __assert_fail(const char *assertion, const char *file, unsigned int line, |
|
const char *function) |
|
{ |
|
/* This will not return */ |
|
panic("%s:%u: %s: Assertion `%s' failed.", file, line, function, |
|
assertion); |
|
}
|
|
|