[U-Boot] [PATCH 4/7] lib: Split panic functions out of vsprintf.c
Simon Glass
sjg at chromium.org
Tue Dec 8 01:39:51 CET 2015
Hi Sjoerd,
On 4 December 2015 at 15:27, Sjoerd Simons
<sjoerd.simons at collabora.co.uk> wrote:
> To allow panic and panic_str to still be used when using tiny-printf,
> split them out into their own file which gets build regardless of what
> printf implementation is used.
>
> Signed-off-by: Sjoerd Simons <sjoerd.simons at collabora.co.uk>
> ---
>
> lib/Makefile | 6 +++---
> lib/panic.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
> lib/vsprintf.c | 29 -----------------------------
> 3 files changed, 48 insertions(+), 32 deletions(-)
> create mode 100644 lib/panic.c
Tested on firefly:
Tested-by: Simon Glass <sjg at chromium.org>
>
> diff --git a/lib/Makefile b/lib/Makefile
> index 1f1ff6f..ae84833 100644
> --- a/lib/Makefile
> +++ b/lib/Makefile
> @@ -85,13 +85,13 @@ obj-$(CONFIG_LIB_RAND) += rand.o
> ifdef CONFIG_SPL_BUILD
> # SPL U-Boot may use full-printf, tiny-printf or none at all
> ifdef CONFIG_USE_TINY_PRINTF
> -obj-$(CONFIG_SPL_SERIAL_SUPPORT) += tiny-printf.o
> +obj-$(CONFIG_SPL_SERIAL_SUPPORT) += tiny-printf.o panic.o
> else
> -obj-$(CONFIG_SPL_SERIAL_SUPPORT) += vsprintf.o
> +obj-$(CONFIG_SPL_SERIAL_SUPPORT) += vsprintf.o panic.o
> endif
> else
> # Main U-Boot always uses the full printf support
> -obj-y += vsprintf.o
> +obj-y += vsprintf.o panic.o
> endif
Why not just add this outside all the ifdef stuff:
obj-y += panic.o
>
> subdir-ccflags-$(CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED) += -O2
> diff --git a/lib/panic.c b/lib/panic.c
> new file mode 100644
> index 0000000..e2b8b74
> --- /dev/null
> +++ b/lib/panic.c
> @@ -0,0 +1,45 @@
> +/*
> + * linux/lib/vsprintf.c
nit: can you please drop this line or fix it?
> + *
> + * Copyright (C) 1991, 1992 Linus Torvalds
> + */
> +
> +/* vsprintf.c -- Lars Wirzenius & Linus Torvalds. */
> +/*
> + * Wirzenius wrote this portably, Torvalds fucked it up :-)
> + */
Did any of this code actually come from Linux? If not perhaps invent
your own copyright?
> +
> +#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, ...)
> +{
> + va_list args;
> + va_start(args, fmt);
> + vprintf(fmt, args);
> + va_end(args);
> + panic_finish();
> +}
> diff --git a/lib/vsprintf.c b/lib/vsprintf.c
> index dd8380b..bf5fd01 100644
> --- a/lib/vsprintf.c
> +++ b/lib/vsprintf.c
> @@ -897,35 +897,6 @@ int vprintf(const char *fmt, va_list args)
> return i;
> }
>
> -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, ...)
> -{
> - va_list args;
> - va_start(args, fmt);
> - vprintf(fmt, args);
> - va_end(args);
> - panic_finish();
> -}
>
> void __assert_fail(const char *assertion, const char *file, unsigned line,
> const char *function)
> --
> 2.6.2
>
Regards,
Simon
More information about the U-Boot
mailing list