DPDK patches and discussions
 help / color / mirror / Atom feed
From: Ibtisam Tariq <ibtisam.tariq@emumba.com>
To: marko.kovacevic@intel.com, konstantin.ananyev@intel.com,
	reshma.pattan@intel.com, john.mcnamara@intel.com,
	cristian.dumitrescu@intel.com, jasvinder.singh@intel.com,
	chenbo.xia@intel.com, maxime.coquelin@redhat.com,
	xiaoyun.li@intel.com
Cc: dev@dpdk.org, Ibtisam Tariq <ibtisam.tariq@emumba.com>,
	stephen@networkplumber.org
Subject: [dpdk-dev] [PATCH 5/8] examples/qos_sched: enhance getopt_long usage
Date: Thu, 29 Oct 2020 12:53:36 +0000	[thread overview]
Message-ID: <20201029125339.30916-5-ibtisam.tariq@emumba.com> (raw)
In-Reply-To: <20201029125339.30916-1-ibtisam.tariq@emumba.com>

Instead of using getopt_long return value, strcmp was used to
compare the input parameters with the struct option array. This
patch get rid of all those strcmp by directly binding each longopt
with an int enum.

Bugzilla ID: 238
Fixes: de3cfa2c98 ("sched: initial import")
Fixes: cb056611a8 ("eal: rename lcore master and slave")
Cc: stephen@networkplumber.org

Reported-by: David Marchand <david.marchand@redhat.com>
Signed-off-by: Ibtisam Tariq <ibtisam.tariq@emumba.com>
---
 examples/qos_sched/args.c | 161 +++++++++++++++++++++++---------------
 1 file changed, 99 insertions(+), 62 deletions(-)

diff --git a/examples/qos_sched/args.c b/examples/qos_sched/args.c
index c62719623..8411a87b5 100644
--- a/examples/qos_sched/args.c
+++ b/examples/qos_sched/args.c
@@ -297,6 +297,25 @@ app_parse_burst_conf(const char *conf_str)
 	return 0;
 }
 
+enum {
+#define CMD_LINE_OPT_PFC "pfc"
+	CMD_LINE_OPT_PFC_NUM = 256,
+#define CMD_LINE_OPT_MNC "mnc"
+	CMD_LINE_OPT_MNC_NUM,
+#define CMD_LINE_OPT_RSZ "rsz"
+	CMD_LINE_OPT_RSZ_NUM,
+#define CMD_LINE_OPT_BSZ "bsz"
+	CMD_LINE_OPT_BSZ_NUM,
+#define CMD_LINE_OPT_MSZ "msz"
+	CMD_LINE_OPT_MSZ_NUM,
+#define CMD_LINE_OPT_RTH "rth"
+	CMD_LINE_OPT_RTH_NUM,
+#define CMD_LINE_OPT_TTH "tth"
+	CMD_LINE_OPT_TTH_NUM,
+#define CMD_LINE_OPT_CFG "cfg"
+	CMD_LINE_OPT_CFG_NUM,
+};
+
 /*
  * Parses the argument given in the command line of the application,
  * calculates mask for used cores and initializes EAL with calculated core mask
@@ -306,19 +325,26 @@ app_parse_args(int argc, char **argv)
 {
 	int opt, ret;
 	int option_index;
-	const char *optname;
 	char *prgname = argv[0];
 	uint32_t i, nb_lcores;
 
 	static struct option lgopts[] = {
-		{ "pfc", 1, 0, 0 },
-		{ "mnc", 1, 0, 0 },
-		{ "rsz", 1, 0, 0 },
-		{ "bsz", 1, 0, 0 },
-		{ "msz", 1, 0, 0 },
-		{ "rth", 1, 0, 0 },
-		{ "tth", 1, 0, 0 },
-		{ "cfg", 1, 0, 0 },
+		{ CMD_LINE_OPT_PFC, 1,
+				NULL, CMD_LINE_OPT_PFC_NUM },
+		{ CMD_LINE_OPT_MNC, 1,
+				NULL, CMD_LINE_OPT_MNC_NUM},
+		{ CMD_LINE_OPT_RSZ, 1,
+				NULL, CMD_LINE_OPT_RSZ_NUM},
+		{ CMD_LINE_OPT_BSZ, 1,
+				NULL, CMD_LINE_OPT_BSZ_NUM},
+		{ CMD_LINE_OPT_MSZ, 1,
+				NULL, CMD_LINE_OPT_MSZ_NUM},
+		{ CMD_LINE_OPT_RTH, 1,
+				NULL, CMD_LINE_OPT_RTH_NUM},
+		{ CMD_LINE_OPT_TTH, 1,
+				NULL, CMD_LINE_OPT_TTH_NUM},
+		{ CMD_LINE_OPT_CFG, 1,
+				NULL, CMD_LINE_OPT_CFG_NUM},
 		{ NULL,  0, 0, 0 }
 	};
 
@@ -342,66 +368,77 @@ app_parse_args(int argc, char **argv)
 				interactive = 1;
 				break;
 			/* long options */
-			case 0:
-				optname = lgopts[option_index].name;
-				if (str_is(optname, "pfc")) {
-					ret = app_parse_flow_conf(optarg);
-					if (ret) {
-						RTE_LOG(ERR, APP, "Invalid pipe configuration %s\n", optarg);
-						return -1;
-					}
-					break;
-				}
-				if (str_is(optname, "mnc")) {
-					app_main_core = (uint32_t)atoi(optarg);
-					break;
-				}
-				if (str_is(optname, "rsz")) {
-					ret = app_parse_ring_conf(optarg);
-					if (ret) {
-						RTE_LOG(ERR, APP, "Invalid ring configuration %s\n", optarg);
-						return -1;
-					}
-					break;
+
+			case CMD_LINE_OPT_PFC_NUM:
+			{
+				ret = app_parse_flow_conf(optarg);
+				if (ret) {
+					RTE_LOG(ERR, APP, "Invalid pipe configuration %s\n",
+							optarg);
+					return -1;
 				}
-				if (str_is(optname, "bsz")) {
-					ret = app_parse_burst_conf(optarg);
-					if (ret) {
-						RTE_LOG(ERR, APP, "Invalid burst configuration %s\n", optarg);
-						return -1;
-					}
-					break;
+				break;
+			}
+			case CMD_LINE_OPT_MNC_NUM:
+			{
+				app_main_core = (uint32_t)atoi(optarg);
+				break;
+			}
+			case CMD_LINE_OPT_RSZ_NUM:
+			{
+				ret = app_parse_ring_conf(optarg);
+				if (ret) {
+					RTE_LOG(ERR, APP, "Invalid ring configuration %s\n",
+							optarg);
+					return -1;
 				}
-				if (str_is(optname, "msz")) {
-					mp_size = atoi(optarg);
-					if (mp_size <= 0) {
-						RTE_LOG(ERR, APP, "Invalid mempool size %s\n", optarg);
-						return -1;
-					}
-					break;
+				break;
+			}
+			case CMD_LINE_OPT_BSZ_NUM:
+			{
+				ret = app_parse_burst_conf(optarg);
+				if (ret) {
+					RTE_LOG(ERR, APP, "Invalid burst configuration %s\n",
+							optarg);
+					return -1;
 				}
-				if (str_is(optname, "rth")) {
-					ret = app_parse_rth_conf(optarg);
-					if (ret) {
-						RTE_LOG(ERR, APP, "Invalid RX threshold configuration %s\n", optarg);
-						return -1;
-					}
-					break;
+				break;
+			}
+			case CMD_LINE_OPT_MSZ_NUM:
+			{
+				mp_size = atoi(optarg);
+				if (mp_size <= 0) {
+					RTE_LOG(ERR, APP, "Invalid mempool size %s\n",
+							optarg);
+					return -1;
 				}
-				if (str_is(optname, "tth")) {
-					ret = app_parse_tth_conf(optarg);
-					if (ret) {
-						RTE_LOG(ERR, APP, "Invalid TX threshold configuration %s\n", optarg);
-						return -1;
-					}
-					break;
+				break;
+			}
+			case CMD_LINE_OPT_RTH_NUM:
+			{
+				ret = app_parse_rth_conf(optarg);
+				if (ret) {
+					RTE_LOG(ERR, APP, "Invalid RX threshold configuration %s\n",
+							optarg);
+					return -1;
 				}
-				if (str_is(optname, "cfg")) {
-					cfg_profile = optarg;
-					break;
+				break;
+			}
+			case CMD_LINE_OPT_TTH_NUM:
+			{
+				ret = app_parse_tth_conf(optarg);
+				if (ret) {
+					RTE_LOG(ERR, APP, "Invalid TX threshold configuration %s\n",
+							optarg);
+					return -1;
 				}
 				break;
-
+			}
+			case CMD_LINE_OPT_CFG_NUM:
+			{
+				cfg_profile = optarg;
+				break;
+			}
 			default:
 				app_usage(prgname);
 				return -1;
-- 
2.17.1


  parent reply	other threads:[~2020-10-29 12:56 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-29 12:53 [dpdk-dev] [PATCH 1/8] examples/fips_validation: " Ibtisam Tariq
2020-10-29 12:53 ` [dpdk-dev] [PATCH 2/8] examples/l3fwd-acl: " Ibtisam Tariq
2020-10-29 12:53 ` [dpdk-dev] [PATCH 3/8] examples/packet_ordering: " Ibtisam Tariq
2020-10-29 12:53 ` [dpdk-dev] [PATCH 4/8] examples/performance-thread/l3fwd-thread: " Ibtisam Tariq
2020-10-29 12:53 ` Ibtisam Tariq [this message]
2020-10-29 12:53 ` [dpdk-dev] [PATCH 6/8] examples/vhost: " Ibtisam Tariq
2020-10-29 12:53 ` [dpdk-dev] [PATCH 7/8] examples/vhost_crypto: " Ibtisam Tariq
2020-10-29 12:53 ` [dpdk-dev] [PATCH 8/8] examples/tep_termination: " Ibtisam Tariq
2020-10-29 13:16   ` David Marchand
2020-11-02  8:18     ` Ibtisam Tariq
2020-10-29 22:07 ` [dpdk-dev] [PATCH 1/8] examples/fips_validation: " David Marchand
2020-11-02  8:32   ` Ibtisam Tariq
2020-11-04 10:00     ` Ibtisam Tariq
2020-11-05  8:59       ` David Marchand
2020-11-10  6:10         ` Ibtisam Tariq
2020-11-10  8:23           ` David Marchand
2020-11-10  9:03             ` Ibtisam Tariq

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201029125339.30916-5-ibtisam.tariq@emumba.com \
    --to=ibtisam.tariq@emumba.com \
    --cc=chenbo.xia@intel.com \
    --cc=cristian.dumitrescu@intel.com \
    --cc=dev@dpdk.org \
    --cc=jasvinder.singh@intel.com \
    --cc=john.mcnamara@intel.com \
    --cc=konstantin.ananyev@intel.com \
    --cc=marko.kovacevic@intel.com \
    --cc=maxime.coquelin@redhat.com \
    --cc=reshma.pattan@intel.com \
    --cc=stephen@networkplumber.org \
    --cc=xiaoyun.li@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).