[v1,3/8] option: add usage string

Message ID 1f284decd3c8d5398d6d0fb5ef7cc024562dc219.1545325395.git.gaetan.rivet@6wind.com (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers
Series Clean up rte_option |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Gaëtan Rivet Dec. 20, 2018, 5:06 p.m. UTC
  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 |  1 +
 lib/librte_eal/common/eal_private.h        |  7 +++++++
 lib/librte_eal/common/include/rte_option.h |  1 +
 lib/librte_eal/common/rte_option.c         | 17 +++++++++++++++++
 lib/librte_telemetry/rte_telemetry.c       |  1 +
 5 files changed, 27 insertions(+)
  

Patch

diff --git a/lib/librte_eal/common/eal_common_options.c b/lib/librte_eal/common/eal_common_options.c
index 6e3a83b98..e096ac896 100644
--- a/lib/librte_eal/common/eal_common_options.c
+++ b/lib/librte_eal/common/eal_common_options.c
@@ -1494,4 +1494,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();
 }
diff --git a/lib/librte_eal/common/eal_private.h b/lib/librte_eal/common/eal_private.h
index 442c6dc48..50ab58385 100644
--- a/lib/librte_eal/common/eal_private.h
+++ b/lib/librte_eal/common/eal_private.h
@@ -370,4 +370,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_ */
diff --git a/lib/librte_eal/common/include/rte_option.h b/lib/librte_eal/common/include/rte_option.h
index 8957b970c..bbcc6cec9 100644
--- a/lib/librte_eal/common/include/rte_option.h
+++ b/lib/librte_eal/common/include/rte_option.h
@@ -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. */
 };
diff --git a/lib/librte_eal/common/rte_option.c b/lib/librte_eal/common/rte_option.c
index 9e233f7d2..2ed74873b 100644
--- a/lib/librte_eal/common/rte_option.c
+++ b/lib/librte_eal/common/rte_option.c
@@ -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");
+}
diff --git a/lib/librte_telemetry/rte_telemetry.c b/lib/librte_telemetry/rte_telemetry.c
index 3080bb715..0ba6626c1 100644
--- a/lib/librte_telemetry/rte_telemetry.c
+++ b/lib/librte_telemetry/rte_telemetry.c
@@ -1799,6 +1799,7 @@  int telemetry_log_level;
 
 static struct rte_option option = {
 	.opt_str = "telemetry",
+	.usage = "Enable telemetry backend",
 	.cb = &rte_telemetry_init,
 	.enabled = 0
 };