log: enable filtering on functions
Up to now we could only use log level, category, and file for filtering.
Allow filtering on a list of functions.
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
diff --git a/common/log.c b/common/log.c
index b2b5f3c..b75e404 100644
--- a/common/log.c
+++ b/common/log.c
@@ -192,6 +192,10 @@
!log_has_member(filt->file_list, rec->file))
continue;
+ if (filt->func_list &&
+ !log_has_member(filt->func_list, rec->func))
+ continue;
+
if (filt->flags & LOGFF_DENY)
return false;
else
@@ -329,7 +333,7 @@
int log_add_filter_flags(const char *drv_name, enum log_category_t cat_list[],
enum log_level_t level, const char *file_list,
- int flags)
+ const char *func_list, int flags)
{
struct log_filter *filt;
struct log_device *ldev;
@@ -364,6 +368,13 @@
goto err;
}
}
+ if (func_list) {
+ filt->func_list = strdup(func_list);
+ if (!filt->func_list) {
+ ret = -ENOMEM;
+ goto err;
+ }
+ }
filt->filter_num = ldev->next_filter_num++;
/* Add deny filters to the beginning of the list */
if (flags & LOGFF_DENY)