log: Set up a flag byte for log records
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>
This commit is contained in:
parent
c57ec2c2ba
commit
79d5983b61
@ -153,7 +153,7 @@ static bool log_passes_filters(struct log_device *ldev, struct log_rec *rec)
|
||||
{
|
||||
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 */
|
||||
@ -245,7 +245,9 @@ int _log(enum log_category_t cat, enum log_level_t level, const char *file,
|
||||
|
||||
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;
|
||||
@ -255,7 +257,8 @@ int _log(enum log_category_t cat, enum log_level_t level, const char *file,
|
||||
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);
|
||||
|
@ -322,6 +322,12 @@ void __assert_fail(const char *assertion, const char *file, unsigned int line,
|
||||
#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;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user