log: force DEBUG when LOG_DEBUG is activated

When CONFIG_LOG is activated, if LOG_DEBUG is defined in a file and
DEBUG is not defined the trace with debug() macro are not displayed,
because the parameter cond : _DEBUG = 0 is checked in debug_cond().

With this patch the define DEBUG, used to force the trace generated by
debug() macro, is linked with the define LOG_DEBUG, used to force the
trace generated by other macros (log_debug, dev_dbg, pr_debug).

We only need to define LOG_DEBUG in a file to activate all the
traces generated by any U-Boot debug macro, as it is described in
/doc/develop/logging.rst

Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
This commit is contained in:
Patrick Delaunay 2022-07-12 09:39:49 +02:00 committed by Simon Glass
parent de84a4f0ee
commit 54e89a8beb
2 changed files with 10 additions and 12 deletions

View File

@ -66,26 +66,21 @@ Sometimes it is useful to turn on logging just in one file. You can use this
#define LOG_DEBUG
to enable building in of all logging statements in a single file. Put it at
the top of the file, before any #includes.
To actually get U-Boot to output this you need to also set the default logging
level - e.g. set CONFIG_LOG_DEFAULT_LEVEL to 7 (:c:data:`LOGL_DEBUG`) or more.
Otherwise debug output is suppressed and will not be generated.
the top of the file, before any #includes and any message in the file will be
written, regardless of the value of CONFIG_LOG_DEFAULT_LEVEL.
Using DEBUG
-----------
U-Boot has traditionally used a #define called DEBUG to enable debugging on a
file-by-file basis. The debug() macro compiles to a printf() statement if
DEBUG is enabled, and an empty statement if not.
file-by-file basis but LOG_DEBUG are intended to replace it with the logging
facilities; DEBUG is activated when LOG_DEBUG is activated.
With logging enabled, debug() statements are interpreted as logging output
with a level of LOGL_DEBUG and a category of LOGC_NONE.
with a level of LOGL_DEBUG and a category of LOG_CATEGORY.
The logging facilities are intended to replace DEBUG, but if DEBUG is defined
at the top of a file, then it takes precedence. This means that debug()
statements will result in output to the console and this output will not be
logged.
With logging disabled, the debug() macro compiles to a printf() statement
if DEBUG is enabled and to an empty statement if not.
Logging statements
------------------

View File

@ -194,6 +194,9 @@ int _log_buffer(enum log_category_t cat, enum log_level_t level,
#ifdef LOG_DEBUG
#define _LOG_DEBUG LOGL_FORCE_DEBUG
#ifndef DEBUG
#define DEBUG
#endif
#else
#define _LOG_DEBUG 0
#endif