diff mbox

[PATCHv6,01/38] helpers: adding command line argument parsing

Message ID 1462984942-53326-2-git-send-email-christophe.milard@linaro.org
State New
Headers show

Commit Message

Christophe Milard May 11, 2016, 4:41 p.m. UTC
A function to parse options meant for the helpers out of a the command
line is added. This parse function picks up options altering the behaviour
of the helpers out of the command line. Other options are reject.
No helper options are definied (yet).

Signed-off-by: Christophe Milard <christophe.milard@linaro.org>
---
 helper/include/odp/helper/linux.h | 13 +++++++++++++
 helper/linux.c                    | 30 ++++++++++++++++++++++++++++++
 2 files changed, 43 insertions(+)
diff mbox

Patch

diff --git a/helper/include/odp/helper/linux.h b/helper/include/odp/helper/linux.h
index 7a6504f..c6736a0 100644
--- a/helper/include/odp/helper/linux.h
+++ b/helper/include/odp/helper/linux.h
@@ -130,6 +130,19 @@  int odph_linux_process_fork_n(odph_linux_process_t *proc_tbl,
 int odph_linux_process_wait_n(odph_linux_process_t *proc_tbl, int num);
 
 
+/**
+ * Parse linux helper options
+ *
+ * Parse the command line options. Pick up options meant for the helper itself.
+ *
+ * @param argc argument count
+ * @param argv argument values
+ *
+ * @return On success: 0
+ *	   On failure: -1 (failure occurs only if a value passed for a helper
+ *			   option is invalid. callers cannot have own options)
+ */
+int odph_parse_options(int argc, char *argv[]);
 #ifdef __cplusplus
 }
 #endif
diff --git a/helper/linux.c b/helper/linux.c
index 24e243b..5dbc2da 100644
--- a/helper/linux.c
+++ b/helper/linux.c
@@ -16,6 +16,7 @@ 
 #include <stdlib.h>
 #include <string.h>
 #include <stdio.h>
+#include <getopt.h>
 
 #include <odp_api.h>
 #include <odp/helper/linux.h>
@@ -236,3 +237,32 @@  int odph_linux_process_wait_n(odph_linux_process_t *proc_tbl, int num)
 
 	return 0;
 }
+
+/*
+ * Parse command line options to extract options affecting helpers.
+ */
+int odph_parse_options(int argc, char *argv[])
+{
+	int c;
+
+	static struct option long_options[] = {
+		/* These options set a flag. */
+		{0, 0, 0, 0}
+		};
+
+	while (1) {
+		/* getopt_long stores the option index here. */
+		int option_index = 0;
+
+		c = getopt_long (argc, argv, "",
+				 long_options, &option_index);
+
+		/* Detect the end of the options. */
+		if (c == -1)
+			break;
+	}
+
+	optind = 0; /* caller expects this to be zero if it parses too*/
+
+	return 0;
+}