log: Add function to create a filter with flags

This function exposes a way to specify flags when creating a filter.

Signed-off-by: Sean Anderson <seanga2@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Sean Anderson 2020-10-27 19:55:25 -04:00 committed by Tom Rini
parent 3102c1d2c2
commit a02f84ee9c
2 changed files with 31 additions and 4 deletions

View file

@ -246,8 +246,9 @@ int _log(enum log_category_t cat, enum log_level_t level, const char *file,
return 0; return 0;
} }
int log_add_filter(const char *drv_name, enum log_category_t cat_list[], int log_add_filter_flags(const char *drv_name, enum log_category_t cat_list[],
enum log_level_t max_level, const char *file_list) enum log_level_t max_level, const char *file_list,
int flags)
{ {
struct log_filter *filt; struct log_filter *filt;
struct log_device *ldev; struct log_device *ldev;
@ -261,6 +262,7 @@ int log_add_filter(const char *drv_name, enum log_category_t cat_list[],
if (!filt) if (!filt)
return -ENOMEM; return -ENOMEM;
filt->flags = flags;
if (cat_list) { if (cat_list) {
filt->flags |= LOGFF_HAS_CAT; filt->flags |= LOGFF_HAS_CAT;
for (i = 0; ; i++) { for (i = 0; ; i++) {

View file

@ -476,6 +476,25 @@ enum log_fmt {
/* Handle the 'log test' command */ /* Handle the 'log test' command */
int do_log_test(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]); int do_log_test(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]);
/**
* log_add_filter_flags() - Add a new filter to a log device, specifying flags
*
* @drv_name: Driver name to add the filter to (since each driver only has a
* single device)
* @flags: Flags for this filter (LOGFF_...)
* @cat_list: List of categories to allow (terminated by %LOGC_END). If empty
* then all categories are permitted. Up to LOGF_MAX_CATEGORIES entries
* can be provided
* @max_level: Maximum log level to allow
* @file_list: List of files to allow, separated by comma. If NULL then all
* files are permitted
* @return the sequence number of the new filter (>=0) if the filter was added,
* or a -ve value on error
*/
int log_add_filter_flags(const char *drv_name, enum log_category_t cat_list[],
enum log_level_t max_level, const char *file_list,
int flags);
/** /**
* log_add_filter() - Add a new filter to a log device * log_add_filter() - Add a new filter to a log device
* *
@ -490,8 +509,14 @@ int do_log_test(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]);
* @return the sequence number of the new filter (>=0) if the filter was added, * @return the sequence number of the new filter (>=0) if the filter was added,
* or a -ve value on error * or a -ve value on error
*/ */
int log_add_filter(const char *drv_name, enum log_category_t cat_list[], static inline int log_add_filter(const char *drv_name,
enum log_level_t max_level, const char *file_list); enum log_category_t cat_list[],
enum log_level_t max_level,
const char *file_list)
{
return log_add_filter_flags(drv_name, cat_list, max_level, file_list,
0);
}
/** /**
* log_remove_filter() - Remove a filter from a log device * log_remove_filter() - Remove a filter from a log device