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>master
parent
64e9b4f346
commit
0e98b0a650
@ -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