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: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
parent
64e9b4f346
commit
0e98b0a650
@ -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 *);
|
||||
|
||||
|
59
include/log.h
Normal file
59
include/log.h
Normal file
@ -0,0 +1,59 @@
|
||||
/*
|
||||
* Logging support
|
||||
*
|
||||
* Copyright (c) 2017 Google, Inc
|
||||
* Written by Simon Glass <sjg@chromium.org>
|
||||
*
|
||||
* 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
|
Loading…
Reference in New Issue
Block a user