[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