eal: add option usage string
authorGaetan Rivet <gaetan.rivet@6wind.com>
Thu, 20 Dec 2018 17:06:42 +0000 (18:06 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Tue, 15 Jan 2019 01:40:40 +0000 (02:40 +0100)
Add a usage string field in rte_option, allowing to display
help to the user and describe which options are currently available.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
lib/librte_eal/common/eal_common_options.c
lib/librte_eal/common/eal_private.h
lib/librte_eal/common/include/rte_option.h
lib/librte_eal/common/rte_option.c
lib/librte_telemetry/rte_telemetry.c

index a2d862b..3796dbf 100644 (file)
@@ -1515,4 +1515,5 @@ eal_common_usage(void)
               "  --"OPT_NO_HPET"           Disable HPET\n"
               "  --"OPT_NO_SHCONF"         No shared config (mmap'd files)\n"
               "\n", RTE_MAX_LCORE);
+       rte_option_usage();
 }
index 4f48383..798ede5 100644 (file)
@@ -374,4 +374,11 @@ rte_option_parse(const char *opt);
 void
 rte_option_init(void);
 
+/**
+ * Iterate through the registered options and show the associated
+ * usage string.
+ */
+void
+rte_option_usage(void);
+
 #endif /* _EAL_PRIVATE_H_ */
index 8957b97..bbcc6ce 100644 (file)
@@ -35,6 +35,7 @@ typedef int (*rte_option_cb)(void);
 struct rte_option {
        TAILQ_ENTRY(rte_option) next; /**< Next entry in the list. */
        char *opt_str;             /**< The option name. */
+       const char *usage; /**< Option summary string. */
        rte_option_cb cb;          /**< Function called when option is used. */
        int enabled;               /**< Set when the option is used. */
 };
index 9e233f7..2ed7487 100644 (file)
@@ -61,3 +61,20 @@ rte_option_init(void)
                        option->cb();
        }
 }
+
+void
+rte_option_usage(void)
+{
+       struct rte_option *option;
+       int opt_count = 0;
+
+       TAILQ_FOREACH(option, &rte_option_list, next)
+               opt_count += 1;
+       if (opt_count == 0)
+               return;
+
+       printf("EAL dynamic options:\n");
+       TAILQ_FOREACH(option, &rte_option_list, next)
+               printf("  --%-*s %s\n", 17, option->opt_str, option->usage);
+       printf("\n");
+}
index b2972d7..2e808cd 100644 (file)
@@ -1821,6 +1821,7 @@ int telemetry_log_level;
 
 static struct rte_option option = {
        .opt_str = "telemetry",
+       .usage = "Enable telemetry backend",
        .cb = &rte_telemetry_init,
        .enabled = 0
 };