[U-Boot] [PATCH 08/23] Add pr_fmt() macro

Simon Glass
2014-08-18T18:24:06Z

On 18 August 2014 01:16, Thierry Reding <thierry.reding@gmail.com> wrote:
> From: Thierry Reding <treding@nvidia.com>
>
> This macro can be overridden in source files (before including common.h)
> and can be used to specify a prefix for debug and error messages. An
> example of how to use this is shown below:
>
> #define pr_fmt(fmt) "foo: " fmt
>
> #include <common.h>
>
> ...
> debug("bar");
>
> The resulting message will read:
>
> foo: bar
>
> Signed-off-by: Thierry Reding <treding@nvidia.com>

Acked-by: Simon Glass <sjg@chromium.org>

Seems OK. But I wonder if a string might be simpler?

#define DEBUG_PREFIX "foo: "

+#ifndef DEBUG_PREFIX
+#define DEBUG_PREFIX ""
+#endif

...
printf(DEBUG_PREFIX ##args); \

> ---
> include/common.h | 14 +++++++++-----
> 1 file changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/include/common.h b/include/common.h
> index 1d6cb48ff078..65db04b452d7 100644
> --- a/include/common.h
> +++ b/include/common.h
> @@ -99,15 +99,19 @@ typedef volatile unsigned char vu_char;
> #define _DEBUG 0
> #endif
>
> +#ifndef pr_fmt
> +#define pr_fmt(fmt) fmt
> +#endif
> +
> /*
> * Output a debug text when condition "cond" is met. The "cond" should be
> * computed by a preprocessor in the best case, allowing for the best
> * optimization.
> */
> -#define debug_cond(cond, fmt, args...) \
> - do { \
> - if (cond) \
> - printf(fmt, ##args); \
> +#define debug_cond(cond, fmt, args...) \
> + do { \
> + if (cond) \
> + printf(pr_fmt(fmt), ##args); \
> } while (0)
>
> #define debug(fmt, args...) \
> @@ -129,7 +133,7 @@ void __assert_fail(const char *assertion, const char *file, unsigned line,
> __assert_fail(#x, __FILE__, __LINE__, __func__); })
>
> #define error(fmt, args...) do { \
> - printf("ERROR: " fmt "\nat %s:%d/%s()\n", \
> + printf("ERROR: " pr_fmt(fmt) "\nat %s:%d/%s()\n", \
> ##args, __FILE__, __LINE__, __func__); \
> } while (0)
>
> --
> 2.0.4
>

Regards,
Simon