summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: c57ec2c)
raw | patch | inline | side by side (parent: c57ec2c)
author | Simon Glass <sjg@chromium.org> | |
Thu, 21 Jan 2021 03:10:52 +0000 (20:10 -0700) | ||
committer | Tom Rini <trini@konsulko.com> | |
Fri, 12 Mar 2021 22:41:35 +0000 (17:41 -0500) |
At present only a single flag (force_debug) is used in log records. Before
adding more, convert this into a bitfield, so more can be added without
using more space.
To avoid expanding the log_record struct itself (which some drivers may
wish to store in memory) reduce the line-number field to 16 bits. This
provides for up to 64K lines which should be enough for anyone.
Signed-off-by: Simon Glass <sjg@chromium.org>
adding more, convert this into a bitfield, so more can be added without
using more space.
To avoid expanding the log_record struct itself (which some drivers may
wish to store in memory) reduce the line-number field to 16 bits. This
provides for up to 64K lines which should be enough for anyone.
Signed-off-by: Simon Glass <sjg@chromium.org>
common/log.c | patch | blob | history | |
include/log.h | patch | blob | history |
diff --git a/common/log.c b/common/log.c
index 6b0034c3ba2e258a073a5c12d657247c35e3aebb..f87e33a9ca1621e2e784a18caf15e5cda963950b 100644 (file)
--- a/common/log.c
+++ b/common/log.c
{
struct log_filter *filt;
- if (rec->force_debug)
+ if (rec->flags & LOGRECF_FORCE_DEBUG)
return true;
/* If there are no filters, filter on the default log level */
rec.cat = cat;
rec.level = level & LOGL_LEVEL_MASK;
- rec.force_debug = level & LOGL_FORCE_DEBUG;
+ rec.flags = 0;
+ if (level & LOGL_FORCE_DEBUG)
+ rec.flags |= LOGRECF_FORCE_DEBUG;
rec.file = file;
rec.line = line;
rec.func = func;
gd->log_drop_count++;
/* display dropped traces with console puts and DEBUG_UART */
- if (rec.level <= CONFIG_LOG_DEFAULT_LEVEL || rec.force_debug) {
+ if (rec.level <= CONFIG_LOG_DEFAULT_LEVEL ||
+ rec.flags & LOGRECF_FORCE_DEBUG) {
char buf[CONFIG_SYS_CBSIZE];
va_start(args, fmt);
diff --git a/include/log.h b/include/log.h
index 2d27f9f657e4b88724ef3411a658edf234162cd4..da053b0a6e8934ca741f6fc20f6a317e8c656c1c 100644 (file)
--- a/include/log.h
+++ b/include/log.h
#define log_msg_ret(_msg, _ret) ((void)(_msg), _ret)
#endif
+/** * enum log_rec_flags - Flags for a log record */
+enum log_rec_flags {
+ /** @LOGRECF_FORCE_DEBUG: Force output of debug record */
+ LOGRECF_FORCE_DEBUG = BIT(0),
+};
+
/**
* struct log_rec - a single log record
*
@@ -337,18 +343,18 @@ void __assert_fail(const char *assertion, const char *file, unsigned int line,
*
* @cat: Category, representing a uclass or part of U-Boot
* @level: Severity level, less severe is higher
- * @force_debug: Force output of debug
- * @file: Name of file where the log record was generated (not allocated)
* @line: Line number where the log record was generated
+ * @flags: Flags for log record (enum log_rec_flags)
+ * @file: Name of file where the log record was generated (not allocated)
* @func: Function where the log record was generated (not allocated)
* @msg: Log message (allocated)
*/
struct log_rec {
enum log_category_t cat;
enum log_level_t level;
- bool force_debug;
+ u16 line;
+ u8 flags;
const char *file;
- int line;
const char *func;
const char *msg;
};