Commit 0e98b0a6 authored by Simon Glass's avatar Simon Glass Committed by Tom Rini

Move debug and logging support to a separate header

Before adding new features, move these definitions to a separate header
to avoid further cluttering common.h.
Signed-off-by: default avatarSimon Glass <[email protected]>
Reviewed-by: Bin Meng's avatarBin Meng <[email protected]>
parent 64e9b4f3
......@@ -45,51 +45,7 @@ typedef volatile unsigned char vu_char;
#define CONFIG_SYS_SUPPORT_64BIT_DATA
#endif
#ifdef DEBUG
#define _DEBUG 1
#else
#define _DEBUG 0
#endif
#ifdef CONFIG_SPL_BUILD
#define _SPL_BUILD 1
#else
#define _SPL_BUILD 0
#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(pr_fmt(fmt), ##args); \
} while (0)
/* Show a message if DEBUG is defined in a file */
#define debug(fmt, args...) \
debug_cond(_DEBUG, fmt, ##args)
/* Show a message if not in SPL */
#define warn_non_spl(fmt, args...) \
debug_cond(!_SPL_BUILD, fmt, ##args)
/*
* An assertion is run-time check done in debug mode only. If DEBUG is not
* defined then it is skipped. If DEBUG is defined and the assertion fails,
* then it calls panic*( which may or may not reset/halt U-Boot (see
* CONFIG_PANIC_HANG), It is hoped that all failing assertions are found
* before release, and after release it is hoped that they don't matter. But
* in any case these failing assertions cannot be fixed with a reset (which
* may just do the same assertion again).
*/
void __assert_fail(const char *assertion, const char *file, unsigned line,
const char *function);
#define assert(x) \
({ if (!(x) && _DEBUG) \
__assert_fail(#x, __FILE__, __LINE__, __func__); })
#include <log.h>
typedef void (interrupt_handler_t)(void *);
......
/*
* Logging support
*
* Copyright (c) 2017 Google, Inc
* Written by Simon Glass <[email protected]>
*
* SPDX-License-Identifier: GPL-2.0+
*/
#ifndef __LOG_H
#define __LOG_H
#ifdef DEBUG
#define _DEBUG 1
#else
#define _DEBUG 0
#endif
#ifdef CONFIG_SPL_BUILD
#define _SPL_BUILD 1
#else
#define _SPL_BUILD 0
#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(pr_fmt(fmt), ##args); \
} while (0)
/* Show a message if DEBUG is defined in a file */
#define debug(fmt, args...) \
debug_cond(_DEBUG, fmt, ##args)
/* Show a message if not in SPL */
#define warn_non_spl(fmt, args...) \
debug_cond(!_SPL_BUILD, fmt, ##args)
/*
* An assertion is run-time check done in debug mode only. If DEBUG is not
* defined then it is skipped. If DEBUG is defined and the assertion fails,
* then it calls panic*( which may or may not reset/halt U-Boot (see
* CONFIG_PANIC_HANG), It is hoped that all failing assertions are found
* before release, and after release it is hoped that they don't matter. But
* in any case these failing assertions cannot be fixed with a reset (which
* may just do the same assertion again).
*/
void __assert_fail(const char *assertion, const char *file, unsigned int line,
const char *function);
#define assert(x) \
({ if (!(x) && _DEBUG) \
__assert_fail(#x, __FILE__, __LINE__, __func__); })
#endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment