[PATCH v2 15/22] cmd: log: Add commands to list categories and drivers
Simon Glass
sjg at chromium.org
Mon Oct 12 05:35:20 CEST 2020
On Sat, 10 Oct 2020 at 13:44, Sean Anderson <seanga2 at gmail.com> wrote:
>
> This allows users to query which categories and drivers are available on
> their system. This allows them to construct filter-add commands without
> (e.g.) adjusting the log format to show categories and drivers.
>
> Signed-off-by: Sean Anderson <seanga2 at gmail.com>
> ---
>
> Changes in v2:
> - New
>
> cmd/log.c | 36 ++++++++++++++++++++++++++++++++++++
> 1 file changed, 36 insertions(+)
Reviewed-by: Simon Glass <sjg at chromium.org>
>
> diff --git a/cmd/log.c b/cmd/log.c
> index 9076e220f0..ea458f36f4 100644
> --- a/cmd/log.c
> +++ b/cmd/log.c
> @@ -47,6 +47,38 @@ static int do_log_level(struct cmd_tbl *cmdtp, int flag, int argc,
> return CMD_RET_SUCCESS;
> }
>
> +static int do_log_categories(struct cmd_tbl *cmdtp, int flag, int argc,
> + char *const argv[])
> +{
> + enum log_category_t cat;
> + const char *name;
> +
> + for (cat = LOGC_FIRST; cat < LOGC_COUNT; cat++) {
> + name = log_get_cat_name(cat);
> + /*
> + * Invalid category names (e.g. <invalid> or <missing>) begin
> + * with '<'. TODO: perhaps change the interface of
> + * log_get_cat_name to return an error code?
> + */
I think that might be cleaner, but this is OK so long as you document
the function return value accordingly.
> + if (name[0] == '<')
> + continue;
> + printf("%s\n", name);
> + }
> +
> + return CMD_RET_SUCCESS;
> +}
> +
> +static int do_log_drivers(struct cmd_tbl *cmdtp, int flag, int argc,
> + char *const argv[])
> +{
> + struct log_device *ldev;
> +
> + list_for_each_entry(ldev, &gd->log_head, sibling_node)
> + printf("%s\n", ldev->drv->name);
> +
> + return CMD_RET_SUCCESS;
> +}
> +
> static int do_log_format(struct cmd_tbl *cmdtp, int flag, int argc,
> char *const argv[])
> {
> @@ -123,6 +155,8 @@ static int do_log_rec(struct cmd_tbl *cmdtp, int flag, int argc,
> #ifdef CONFIG_SYS_LONGHELP
> static char log_help_text[] =
> "level - get/set log level\n"
> + "categories - list log categories\n"
> + "drivers - list log drivers\n"
> "log format <fmt> - set log output format. <fmt> is a string where\n"
> "\teach letter indicates something that should be displayed:\n"
> "\tc=category, l=level, F=file, L=line number, f=function, m=msg\n"
> @@ -137,6 +171,8 @@ static char log_help_text[] =
>
> U_BOOT_CMD_WITH_SUBCMDS(log, "log system", log_help_text,
> U_BOOT_SUBCMD_MKENT(level, 2, 1, do_log_level),
> + U_BOOT_SUBCMD_MKENT(categories, 1, 1, do_log_categories),
> + U_BOOT_SUBCMD_MKENT(drivers, 1, 1, do_log_drivers),
> U_BOOT_SUBCMD_MKENT(format, 2, 1, do_log_format),
> U_BOOT_SUBCMD_MKENT(rec, 7, 1, do_log_rec),
> #if CONFIG_IS_ENABLED(LOG_TEST)
> --
> 2.28.0
>
More information about the U-Boot
mailing list