123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- /*
- * 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>
- #include <hang.h>
- #if !defined(CONFIG_PANIC_HANG)
- #include <command.h>
- #endif
- #include <linux/delay.h>
- 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);
- }
|