From patchwork Tue Nov 24 12:32:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ibtisam Tariq X-Patchwork-Id: 84510 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 3C611A04B1; Tue, 24 Nov 2020 13:35:35 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id B5AEFC97A; Tue, 24 Nov 2020 13:33:58 +0100 (CET) Received: from mail-wm1-f68.google.com (mail-wm1-f68.google.com [209.85.128.68]) by dpdk.org (Postfix) with ESMTP id A311AC974 for ; Tue, 24 Nov 2020 13:33:55 +0100 (CET) Received: by mail-wm1-f68.google.com with SMTP id p22so2271483wmg.3 for ; Tue, 24 Nov 2020 04:33:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=emumba-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=HT7voAvDm6JB3CV8gHKyEPgu2EJuZrnyG/KOki5B6BE=; b=y/5HH5nYFo5Y21cri8lGxaN3lFdL0KPAbyatbt28QUpjP6Od6MWBSXbUwnI6Meiqjn OqlAh55oF0R5JJbJHNgTOljwTvXpMRJflTI+/34lfeAzWQMf1/t+UjM0cTPcXOvLF5FE nDud8gJGJh8eSqAjTYbZWs12uKTHoCWnp0iHMJvx52TUpSFAHMLger5r9HYE4hdTEJUB ln/svsXLnV4TVppB0IUF7ZlqD1c7rV3g3Lu0U9g+tJSlzYak44jFkygDgucDGSfh1VDh AGQb6Dt0HJt/7iDafex6ojHzdU6Nvz+Kk8mZnVvzc4BQn8/2ofsWo7CH94UKD7G24iOt 0Msg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=HT7voAvDm6JB3CV8gHKyEPgu2EJuZrnyG/KOki5B6BE=; b=iUv4ivou6b5s7h73OMPsXdZA7CWQFlBzUyFELwdOPcMcQeLuQw3uDbXQfOuO45nv4P GF/eLjhwePAEHvajIABAtNVd2j8RyzDx7M2WHsMJX87yt2miX7fyg5zTGp6lWajzide0 hMsoel39ICsKCLBGdVHczbSIeg6PdC2yat8AaqGrG5y1EIimjiBKEFygiS5LkvBvtG6Q C/hpM4K3z1IDVWvdO7k769EtOe8Obn51UDj0LtWaqTURiRlqgp/Z5w6dGuqegX6NHMuH paGIeSG/+/bPcbeGUHuZ8N1+jS5GBdIb4gWuTZnF2HjLH4+nKhtIGeyigganUMDivMvr FkCA== X-Gm-Message-State: AOAM531hqCWaJ3G+X4WLfFbE+7YWdhVz0+55oYu0pYyzzlbmhKG2Okz4 ChrAX5BuM6evuxyBGoyz0q3IjQ== X-Google-Smtp-Source: ABdhPJzR0MpHQlLXwEviyLyDr2afOiS2wphaP93Cd1Ftcf3y5ZQZ2EqpDsKD1oe934LvzZ5sqZdamA== X-Received: by 2002:a1c:20c1:: with SMTP id g184mr4410455wmg.32.1606221234446; Tue, 24 Nov 2020 04:33:54 -0800 (PST) Received: from localhost.localdomain ([39.33.169.238]) by smtp.gmail.com with ESMTPSA id w3sm5409034wma.3.2020.11.24.04.33.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Nov 2020 04:33:53 -0800 (PST) From: Ibtisam Tariq To: maxime.coquelin@redhat.com, chenbo.xia@intel.com, cristian.dumitrescu@intel.com, jasvinder.singh@intel.com, john.mcnamara@intel.com, reshma.pattan@intel.com, konstantin.ananyev@intel.com, marko.kovacevic@intel.com Cc: dev@dpdk.org, Ibtisam Tariq , roy.fan.zhang@intel.com Date: Tue, 24 Nov 2020 12:32:49 +0000 Message-Id: <20201124123249.14451-7-ibtisam.tariq@emumba.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201124123249.14451-1-ibtisam.tariq@emumba.com> References: <20201124123249.14451-1-ibtisam.tariq@emumba.com> Subject: [dpdk-dev] [PATCH 7/7] examples/vhost_crypto: enhance getopt_long usage X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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. This is to improve readability and consistency in all examples. Bugzilla ID: 238 Cc: roy.fan.zhang@intel.com Reported-by: David Marchand Signed-off-by: Ibtisam Tariq --- v3: * None. v2: * Remove extra indentations. * Remove extra block brackets in switch statement. * Change enum names to start with OPT_ and remove KEYWORD from enum names. * Remove unused short options. v1: * enhance getopt_long usage. --- examples/vhost_crypto/main.c | 90 +++++++++++++++++++++--------------- 1 file changed, 52 insertions(+), 38 deletions(-) diff --git a/examples/vhost_crypto/main.c b/examples/vhost_crypto/main.c index 29c8f7228..d731751eb 100644 --- a/examples/vhost_crypto/main.c +++ b/examples/vhost_crypto/main.c @@ -62,10 +62,16 @@ struct vhost_crypto_options { uint32_t guest_polling; } options; -#define CONFIG_KEYWORD "config" -#define SOCKET_FILE_KEYWORD "socket-file" -#define ZERO_COPY_KEYWORD "zero-copy" -#define POLLING_KEYWORD "guest-polling" +enum { +#define OPT_CONFIG "config" + OPT_CONFIG_NUM = 256, +#define OPT_SOCKET_FILE "socket-file" + OPT_SOCKET_FILE_NUM, +#define OPT_ZERO_COPY "zero-copy" + OPT_ZERO_COPY_NUM, +#define OPT_POLLING "guest-polling" + OPT_POLLING_NUM, +}; #define NB_SOCKET_FIELDS (2) @@ -195,11 +201,11 @@ vhost_crypto_usage(const char *prgname) { printf("%s [EAL options] --\n" " --%s ,SOCKET-FILE-PATH\n" - " --%s (lcore,cdev_id,queue_id)[,(lcore,cdev_id,queue_id)]\n" + " --%s (lcore,cdev_id,queue_id)[,(lcore,cdev_id,queue_id)]" " --%s: zero copy\n" " --%s: guest polling\n", - prgname, SOCKET_FILE_KEYWORD, CONFIG_KEYWORD, - ZERO_COPY_KEYWORD, POLLING_KEYWORD); + prgname, OPT_SOCKET_FILE, OPT_CONFIG, + OPT_ZERO_COPY, OPT_POLLING); } static int @@ -210,48 +216,56 @@ vhost_crypto_parse_args(int argc, char **argv) char **argvopt; int option_index; struct option lgopts[] = { - {SOCKET_FILE_KEYWORD, required_argument, 0, 0}, - {CONFIG_KEYWORD, required_argument, 0, 0}, - {ZERO_COPY_KEYWORD, no_argument, 0, 0}, - {POLLING_KEYWORD, no_argument, 0, 0}, - {NULL, 0, 0, 0} + {OPT_SOCKET_FILE, required_argument, + NULL, OPT_SOCKET_FILE_NUM}, + {OPT_CONFIG, required_argument, + NULL, OPT_CONFIG_NUM}, + {OPT_ZERO_COPY, no_argument, + NULL, OPT_ZERO_COPY_NUM}, + {OPT_POLLING, no_argument, + NULL, OPT_POLLING_NUM}, + {NULL, 0, 0, 0} }; argvopt = argv; - while ((opt = getopt_long(argc, argvopt, "s:", + while ((opt = getopt_long(argc, argvopt, "", lgopts, &option_index)) != EOF) { + if (opt == '?') { + vhost_crypto_usage(prgname); + return -1; + } + switch (opt) { - case 0: - if (strcmp(lgopts[option_index].name, - SOCKET_FILE_KEYWORD) == 0) { - ret = parse_socket_arg(optarg); - if (ret < 0) { - vhost_crypto_usage(prgname); - return ret; - } - } else if (strcmp(lgopts[option_index].name, - CONFIG_KEYWORD) == 0) { - ret = parse_config(optarg); - if (ret < 0) { - vhost_crypto_usage(prgname); - return ret; - } - } else if (strcmp(lgopts[option_index].name, - ZERO_COPY_KEYWORD) == 0) { - options.zero_copy = - RTE_VHOST_CRYPTO_ZERO_COPY_ENABLE; - } else if (strcmp(lgopts[option_index].name, - POLLING_KEYWORD) == 0) { - options.guest_polling = 1; - } else { + case OPT_SOCKET_FILE_NUM: + ret = parse_socket_arg(optarg); + if (ret < 0) { vhost_crypto_usage(prgname); - return -EINVAL; + return ret; + } + break; + + case OPT_CONFIG_NUM: + ret = parse_config(optarg); + if (ret < 0) { + vhost_crypto_usage(prgname); + return ret; } break; + + case OPT_ZERO_COPY_NUM: + options.zero_copy = + RTE_VHOST_CRYPTO_ZERO_COPY_ENABLE; + break; + + case OPT_POLLING_NUM: + options.guest_polling = 1; + break; + default: - return -1; + vhost_crypto_usage(prgname); + return -EINVAL; } }