On Tue, Apr 2, 2019 at 6:33 AM Vipin Varghese <vipin.vargh...@intel.com>
wrote:

> Add option --multi, to enhance the pdump application to allow capture
> on unique cores for each --pdump option. If option --multi is ignored
> the default capture occurs on a single core for all --pdump options.
>
> Signed-off-by: Vipin Varghese <vipin.vargh...@intel.com>
> ---
>  app/pdump/main.c           | 76 ++++++++++++++++++++++++++++++++------
>  doc/guides/tools/pdump.rst |  8 +++-
>  2 files changed, 72 insertions(+), 12 deletions(-)
>
> diff --git a/app/pdump/main.c b/app/pdump/main.c
> index c1db2eb8d..997c8942f 100644
> --- a/app/pdump/main.c
> +++ b/app/pdump/main.c
> @@ -28,6 +28,7 @@
>  #include <rte_pdump.h>
>
>  #define CMD_LINE_OPT_PDUMP "pdump"
> +#define CMD_LINE_OPT_MULTI "multi"
>  #define PDUMP_PORT_ARG "port"
>  #define PDUMP_PCI_ARG "device_id"
>  #define PDUMP_QUEUE_ARG "queue"
> @@ -139,12 +140,14 @@ struct parse_val {
>  static int num_tuples;
>  static struct rte_eth_conf port_conf_default;
>  static volatile uint8_t quit_signal;
> +static uint8_t multiple_core_capture;
>
>  /**< display usage */
>  static void
>  pdump_usage(const char *prgname)
>  {
> -       printf("usage: %s [EAL options] -- --pdump "
> +       printf("usage: %s [EAL options] -- [--multi] "
> +                       "--pdump "
>                         "'(port=<port id> | device_id=<pci id or vdev
> name>),"
>                         "(queue=<queue_id>),"
>                         "(rx-dev=<iface or pcap file> |"
>

Rather than hardcode the usage, reuse the macro you introduced:
CMD_LINE_OPT_MULTI.


@@ -376,6 +379,7 @@ launch_args_parse(int argc, char **argv, char *prgname)
>         int option_index;
>         static struct option long_option[] = {
>                 {"pdump", 1, 0, 0},
> +               {"multi", 0, 0, 0},
>                 {NULL, 0, 0, 0}
>         };
>
>
Idem reuse the macro.

Besides look at lib/librte_eal/common/eal_options.h and
lib/librte_eal/common/eal_common_options.c.
Define an enum for long only options and map "multi" to an integer that has
no printable character associated.

This way, you can avoid (see below)...

@@ -395,6 +399,10 @@ launch_args_parse(int argc, char **argv, char *prgname)
>                                         pdump_usage(prgname);
>                                         return -1;
>                                 }
> +                       } else if (!strncmp(long_option[option_index].name,
> +                                       CMD_LINE_OPT_MULTI,
> +                                       sizeof(CMD_LINE_OPT_MULTI))) {
> +                               multiple_core_capture = 1;
>                         }
>                         break;
>                 default:
>

... this strncmp.
getopt_long already matched the input option for you.


-- 
David Marchand

Reply via email to