From: Pallavi Kadam <pallavi.kadam@intel.com>
To: dev@dpdk.org, thomas@monjalon.net
Cc: Harini.Ramakrishnan@microsoft.com, keith.wiles@intel.com,
bruce.richardson@intel.com, david.marchand@redhat.com,
jerinjacobk@gmail.com, ranjit.menon@intel.com,
antara.ganesh.kolar@intel.com, pallavi.kadam@intel.com
Subject: [dpdk-dev] [PATCH v7 4/9] eal: getopt implementation for windows
Date: Fri, 31 Jan 2020 16:04:01 -0800 [thread overview]
Message-ID: <20200201000406.11060-5-pallavi.kadam@intel.com> (raw)
In-Reply-To: <20200201000406.11060-1-pallavi.kadam@intel.com>
Adding getopt files to support parsing option on
Windows.
The original contribution is under BSD-2 license.
https://raw.githubusercontent.com/greenplum-db/libusual/master/usual/getopt.c
https://raw.githubusercontent.com/greenplum-db/libusual/master/usual/getopt.h
Signed-off-by: Antara Ganesh Kolar <antara.ganesh.kolar@intel.com>
Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com>
Reviewed-by: Ranjit Menon <ranjit.menon@intel.com>
Reviewed-by: Keith Wiles <keith.wiles@intel.com>
---
lib/librte_eal/windows/eal/getopt.c | 465 ++++++++++++++++++++
lib/librte_eal/windows/eal/include/getopt.h | 127 ++++++
lib/librte_eal/windows/eal/meson.build | 1 +
3 files changed, 593 insertions(+)
create mode 100644 lib/librte_eal/windows/eal/getopt.c
create mode 100644 lib/librte_eal/windows/eal/include/getopt.h
diff --git a/lib/librte_eal/windows/eal/getopt.c b/lib/librte_eal/windows/eal/getopt.c
new file mode 100644
index 000000000..34e5313f6
--- /dev/null
+++ b/lib/librte_eal/windows/eal/getopt.c
@@ -0,0 +1,465 @@
+/* SPDX-License-Identifier: ISC AND BSD-2-Clause
+ * Copyright (c) 2002 Todd C. Miller <Todd.Miller@courtesan.com>
+ *
+ * Sponsored in part by the Defense Advanced Research Projects
+ * Agency (DARPA) and Air Force Research Laboratory, Air Force
+ * Materiel Command, USAF, under agreement number F39502-99-1-0512.
+ */
+/*
+ * Copyright (c) 2000 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Dieter Baron and Thomas Klausner.
+ */
+
+#include <getopt.h>
+#ifdef NEED_USUAL_GETOPT
+
+#include <string.h>
+
+const char *optarg; /* argument associated with option */
+int opterr = 1; /* if error message should be printed */
+int optind = 1; /* index into parent argv vector */
+int optopt = '?'; /* character checked for validity */
+
+#define PRINT_ERROR ((opterr) && (*options != ':'))
+
+#define FLAG_PERMUTE 0x01 /* permute non-options to the end of argv */
+#define FLAG_ALLARGS 0x02 /* treat non-options as args to option "-1" */
+#define FLAG_LONGONLY 0x04 /* operate as getopt_long_only */
+
+/* return values */
+#define BADCH ((int)'?')
+#define BADARG ((*options == ':') ? (int)':' : (int)'?')
+#define INORDER 1
+
+#define EMSG ""
+
+static const char *place = EMSG; /* option letter processing */
+
+/* XXX: set optreset to 1 rather than these two */
+static int nonopt_start = -1; /* first non option argument (for permute) */
+static int nonopt_end = -1; /* first option after non options (for permute) */
+
+/* Error messages */
+static const char recargchar[] = "option requires an argument -- %c";
+static const char recargstring[] = "option requires an argument -- %s";
+static const char ambig[] = "ambiguous option -- %.*s";
+static const char noarg[] = "option doesn't take an argument -- %.*s";
+static const char illoptchar[] = "unknown option -- %c";
+static const char illoptstring[] = "unknown option -- %s";
+
+/*
+ * Compute the greatest common divisor of a and b.
+ */
+static int
+gcd(int a, int b)
+{
+ int c;
+
+ c = a % b;
+ while (c != 0) {
+ a = b;
+ b = c;
+ c = a % b;
+ }
+
+ return (b);
+}
+
+/*
+ * Exchange the block from nonopt_start to nonopt_end with the block
+ * from nonopt_end to opt_end (keeping the same order of arguments
+ * in each block).
+ */
+static void
+permute_args(int panonopt_start, int panonopt_end, int opt_end,
+ char **nargv)
+{
+ int cstart, cyclelen, i, j, ncycle, nnonopts, nopts, pos;
+ char *swap;
+
+ /*
+ * compute lengths of blocks and number and size of cycles
+ */
+ nnonopts = panonopt_end - panonopt_start;
+ nopts = opt_end - panonopt_end;
+ ncycle = gcd(nnonopts, nopts);
+ cyclelen = (opt_end - panonopt_start) / ncycle;
+
+ for (i = 0; i < ncycle; i++) {
+ cstart = panonopt_end+i;
+ pos = cstart;
+ for (j = 0; j < cyclelen; j++) {
+ if (pos >= panonopt_end)
+ pos -= nnonopts;
+ else
+ pos += nopts;
+ swap = nargv[pos];
+ /* LINTED const cast */
+ ((char **) nargv)[pos] = nargv[cstart];
+ /* LINTED const cast */
+ ((char **)nargv)[cstart] = swap;
+ }
+ }
+}
+
+/*
+ * parse_long_options --
+ * Parse long options in argc/argv argument vector.
+ * Returns -1 if short_too is set and the option does not match long_options.
+ */
+static int
+parse_long_options(char **nargv, const char *options,
+ const struct option *long_options, int *idx, int short_too)
+{
+ const char *current_argv;
+ char *has_equal;
+ size_t current_argv_len;
+ int i, match;
+
+ current_argv = place;
+ match = -1;
+
+ optind++;
+
+ has_equal = strchr(current_argv, '=');
+ if (has_equal != NULL) {
+ /* argument found (--option=arg) */
+ current_argv_len = has_equal - current_argv;
+ has_equal++;
+ } else
+ current_argv_len = strlen(current_argv);
+
+ for (i = 0; long_options[i].name; i++) {
+ /* find matching long option */
+ if (strncmp(current_argv, long_options[i].name,
+ current_argv_len))
+ continue;
+
+ if (strlen(long_options[i].name) == current_argv_len) {
+ /* exact match */
+ match = i;
+ break;
+ }
+ /*
+ * If this is a known short option, don't allow
+ * a partial match of a single character.
+ */
+ if (short_too && current_argv_len == 1)
+ continue;
+
+ if (match == -1) /* partial match */
+ match = i;
+ else {
+ /* ambiguous abbreviation */
+ if (PRINT_ERROR)
+ warnx(ambig, (int)current_argv_len,
+ current_argv);
+ optopt = 0;
+ return BADCH;
+ }
+ }
+ if (match != -1) { /* option found */
+ if (long_options[match].has_arg == no_argument
+ && has_equal) {
+ if (PRINT_ERROR)
+ warnx(noarg, (int)current_argv_len,
+ current_argv);
+ /*
+ * XXX: GNU sets optopt to val regardless of flag
+ */
+ if (long_options[match].flag == NULL)
+ optopt = long_options[match].val;
+ else
+ optopt = 0;
+ return BADARG;
+ }
+ if (long_options[match].has_arg == required_argument ||
+ long_options[match].has_arg == optional_argument) {
+ if (has_equal)
+ optarg = has_equal;
+ else if (long_options[match].has_arg ==
+ required_argument) {
+ /*
+ * optional argument doesn't use next nargv
+ */
+ optarg = nargv[optind++];
+ }
+ }
+ if ((long_options[match].has_arg == required_argument)
+ && (optarg == NULL)) {
+ /*
+ * Missing argument; leading ':' indicates no error
+ * should be generated.
+ */
+ if (PRINT_ERROR)
+ warnx(recargstring,
+ current_argv);
+ /*
+ * XXX: GNU sets optopt to val regardless of flag
+ */
+ if (long_options[match].flag == NULL)
+ optopt = long_options[match].val;
+ else
+ optopt = 0;
+ --optind;
+ return BADARG;
+ }
+ } else { /* unknown option */
+ if (short_too) {
+ --optind;
+ return (-1);
+ }
+ if (PRINT_ERROR)
+ warnx(illoptstring, current_argv);
+ optopt = 0;
+ return BADCH;
+ }
+ if (idx)
+ *idx = match;
+ if (long_options[match].flag) {
+ *long_options[match].flag = long_options[match].val;
+ return 0;
+ } else
+ return (long_options[match].val);
+}
+
+/*
+ * getopt_internal --
+ * Parse argc/argv argument vector. Called by user level routines.
+ */
+static int
+getopt_internal(int nargc, char **nargv, const char *options,
+ const struct option *long_options, int *idx, int flags)
+{
+ char *oli; /* option letter list index */
+ int optchar, short_too;
+ static int posixly_correct = -1;
+ char *buf;
+ unsigned int buf_count;
+ int optreset = 0;
+
+ if (options == NULL)
+ return (-1);
+
+ /*
+ * Disable GNU extensions if POSIXLY_CORRECT is set or options
+ * string begins with a '+'.
+ */
+ if (posixly_correct == -1)
+ posixly_correct = _dupenv_s(&buf, (size_t *)&buf_count, "POSIXLY_CORRECT");
+ if (!posixly_correct || *options == '+')
+ flags &= ~FLAG_PERMUTE;
+ else if (*options == '-')
+ flags |= FLAG_ALLARGS;
+ if (*options == '+' || *options == '-')
+ options++;
+ if (!posixly_correct)
+ free(buf);
+ /*
+ * reset if requested
+ */
+ if (optind == 0)
+ optind = optreset = 1;
+
+ optarg = NULL;
+ if (optreset)
+ nonopt_start = nonopt_end = -1;
+start:
+ if (optreset || !*place) { /* update scanning pointer */
+ optreset = 0;
+ if (optind >= nargc) { /* end of argument vector */
+ place = EMSG;
+ if (nonopt_end != -1) {
+ /* do permutation, if we have to */
+ permute_args(nonopt_start, nonopt_end,
+ optind, nargv);
+ optind -= nonopt_end - nonopt_start;
+ } else if (nonopt_start != -1) {
+ /*
+ * If we skipped non-options, set optind
+ * to the first of them.
+ */
+ optind = nonopt_start;
+ }
+ nonopt_start = nonopt_end = -1;
+ return (-1);
+ }
+ place = nargv[optind];
+ if (*place != '-' ||
+ (place[1] == '\0' && strchr(options, '-') == NULL)) {
+ place = EMSG; /* found non-option */
+ if (flags & FLAG_ALLARGS) {
+ /*
+ * GNU extension:
+ * return non-option as argument to option 1
+ */
+ optarg = nargv[optind++];
+ return INORDER;
+ }
+ if (!(flags & FLAG_PERMUTE)) {
+ /*
+ * If no permutation wanted, stop parsing
+ * at first non-option.
+ */
+ return (-1);
+ }
+ /* do permutation */
+ if (nonopt_start == -1)
+ nonopt_start = optind;
+ else if (nonopt_end != -1) {
+ permute_args(nonopt_start, nonopt_end,
+ optind, nargv);
+ nonopt_start = optind -
+ (nonopt_end - nonopt_start);
+ nonopt_end = -1;
+ }
+ optind++;
+ /* process next argument */
+ goto start;
+ }
+ if (nonopt_start != -1 && nonopt_end == -1)
+ nonopt_end = optind;
+
+ /*
+ * If we have "-" do nothing, if "--" we are done.
+ */
+ if (place[1] != '\0' && *++place == '-' && place[1] == '\0') {
+ optind++;
+ place = EMSG;
+ /*
+ * We found an option (--), so if we skipped
+ * non-options, we have to permute.
+ */
+ if (nonopt_end != -1) {
+ permute_args(nonopt_start, nonopt_end,
+ optind, nargv);
+ optind -= nonopt_end - nonopt_start;
+ }
+ nonopt_start = nonopt_end = -1;
+ return (-1);
+ }
+ }
+
+ /*
+ * Check long options if:
+ * 1) we were passed some
+ * 2) the arg is not just "-"
+ * 3) either the arg starts with -- we are getopt_long_only()
+ */
+ if (long_options != NULL && place != nargv[optind] &&
+ (*place == '-' || (flags & FLAG_LONGONLY))) {
+ short_too = 0;
+ if (*place == '-')
+ place++; /* --foo long option */
+ else if (*place != ':' && strchr(options, *place) != NULL)
+ short_too = 1; /* could be short option too */
+
+ optchar = parse_long_options(nargv, options, long_options,
+ idx, short_too);
+ if (optchar != -1) {
+ place = EMSG;
+ return optchar;
+ }
+ }
+
+ optchar = (int)*place++;
+ oli = strchr(options, optchar);
+ if (optchar == (int)':' ||
+ (optchar == (int)'-' && *place != '\0') ||
+ oli == NULL) {
+ /*
+ * If the user specified "-" and '-' isn't listed in
+ * options, return -1 (non-option) as per POSIX.
+ * Otherwise, it is an unknown option character (or ':').
+ */
+ if (optchar == (int)'-' && *place == '\0')
+ return (-1);
+ if (!*place)
+ ++optind;
+ if (PRINT_ERROR)
+ warnx(illoptchar, optchar);
+ optopt = optchar;
+ return BADCH;
+ }
+ if (long_options != NULL && optchar == 'W' && oli[1] == ';') {
+ /* -W long-option */
+ if (*place)
+ ;
+ else if (++optind >= nargc) { /* no arg */
+ place = EMSG;
+ if (PRINT_ERROR)
+ warnx(recargchar, optchar);
+ optopt = optchar;
+ return BADARG;
+ } /* white space */
+ place = nargv[optind];
+ optchar = parse_long_options(nargv, options, long_options,
+ idx, 0);
+ place = EMSG;
+ return optchar;
+ }
+ if (*++oli != ':') { /* doesn't take argument */
+ if (!*place)
+ ++optind;
+ } else { /* takes (optional) argument */
+ optarg = NULL;
+ if (*place) /* no white space */
+ optarg = place;
+ else if (oli[1] != ':') { /* arg not optional */
+ if (++optind >= nargc) { /* no arg */
+ place = EMSG;
+ if (PRINT_ERROR)
+ warnx(recargchar, optchar);
+ optopt = optchar;
+ return BADARG;
+ }
+ optarg = nargv[optind];
+ }
+ place = EMSG;
+ ++optind;
+ }
+ /* dump back option letter */
+ return optchar;
+}
+
+/*
+ * getopt --
+ * Parse argc/argv argument vector.
+ */
+int
+getopt(int nargc, char *nargv[], const char *options)
+{
+ return getopt_internal(nargc, nargv, options, NULL, NULL,
+ FLAG_PERMUTE);
+}
+
+/*
+ * getopt_long --
+ * Parse argc/argv argument vector.
+ */
+int
+getopt_long(int nargc, char *nargv[], const char *options,
+ const struct option *long_options, int *idx)
+{
+
+ return (getopt_internal(nargc, nargv, options, long_options, idx,
+ FLAG_PERMUTE));
+}
+
+/*
+ * getopt_long_only --
+ * Parse argc/argv argument vector.
+ */
+int
+getopt_long_only(int nargc, char *nargv[], const char *options,
+ const struct option *long_options, int *idx)
+{
+
+ return (getopt_internal(nargc, nargv, options, long_options, idx,
+ FLAG_PERMUTE|FLAG_LONGONLY));
+}
+
+#endif /* NEED_USUAL_GETOPT */
diff --git a/lib/librte_eal/windows/eal/include/getopt.h b/lib/librte_eal/windows/eal/include/getopt.h
new file mode 100644
index 000000000..722e05381
--- /dev/null
+++ b/lib/librte_eal/windows/eal/include/getopt.h
@@ -0,0 +1,127 @@
+/* SPDX-License-Identifier: BSD-2-Clause
+ * Copyright (c) 2000 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Dieter Baron and Thomas Klausner.
+ */
+
+/**
+ * @file
+ * getopt compat.
+ *
+ * This module provides getopt() and getopt_long().
+ */
+
+#ifndef _USUAL_GETOPT_H_
+#define _USUAL_GETOPT_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifndef NEED_USUAL_GETOPT
+#if !defined(HAVE_GETOPT_H) || !defined(HAVE_GETOPT) || \
+ !defined(HAVE_GETOPT_LONG)
+#define NEED_USUAL_GETOPT
+#endif
+#endif
+
+#ifndef NEED_USUAL_GETOPT
+
+/* Use system getopt */
+#include <getopt.h>
+
+#else /* NEED_USUAL_GETOPT */
+
+/* All the headers include this file. */
+#include <crtdefs.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <stdio.h>
+
+#include <windows.h>
+
+/* avoid name collision */
+#define optarg usual_optarg
+#define opterr usual_opterr
+#define optind usual_optind
+#define optopt usual_optopt
+#define getopt(a, b, c) usual_getopt(a, b, c)
+#define getopt_long(a, b, c, d, e) usual_getopt_long(a, b, c, d, e)
+
+/** argument to current option, or NULL if it has none */
+extern const char *optarg;
+/** Current position in arg string. Starts from 1.
+ * Setting to 0 resets state.
+ */
+extern int optind;
+/** whether getopt() should print error messages on problems. Default: 1. */
+extern int opterr;
+/** Option char which caused error */
+extern int optopt;
+
+/** long option takes no argument */
+#define no_argument 0
+/** long option requires argument */
+#define required_argument 1
+/** long option has optional argument */
+#define optional_argument 2
+
+#ifndef __CYGWIN__
+#define __progname __argv[0]
+#else
+extern char __declspec(dllimport) * __progname;
+#endif
+
+/** Long option description */
+struct option {
+ /** name of long option */
+ const char *name;
+
+ /**
+ * whether option takes an argument.
+ * One of no_argument, required_argument, and optional_argument.
+ */
+ int has_arg;
+
+ /** if not NULL, set *flag to val when option found */
+ int *flag;
+
+ /** if flag not NULL, value to set *flag to; else return value */
+ int val;
+};
+
+/** Compat: getopt */
+int getopt(int argc, char *argv[], const char *options);
+
+/** Compat: getopt_long */
+int getopt_long(int argc, char *argv[], const char *options,
+ const struct option *longopts, int *longindex);
+
+/** Compat: getopt_long_only */
+int getopt_long_only(int nargc, char *argv[], const char *options,
+ const struct option *long_options, int *idx);
+
+static void
+_vwarnx(const char *fmt, va_list ap)
+{
+ (void)fprintf(stderr, "%s: ", __progname);
+ if (fmt != NULL)
+ (void)vfprintf(stderr, "%s", ap);
+ (void)fprintf(stderr, "\n");
+}
+
+static void
+warnx(const char *fmt, ...)
+{
+ va_list ap;
+ va_start(ap, fmt);
+ _vwarnx(fmt, ap);
+ va_end(ap);
+}
+
+#endif /* NEED_USUAL_GETOPT */
+
+#endif /* !_USUAL_GETOPT_H_ */
diff --git a/lib/librte_eal/windows/eal/meson.build b/lib/librte_eal/windows/eal/meson.build
index af4f70f00..d37222158 100644
--- a/lib/librte_eal/windows/eal/meson.build
+++ b/lib/librte_eal/windows/eal/meson.build
@@ -17,4 +17,5 @@ env_sources = files('eal.c',
'eal_debug.c',
'eal_lcore.c',
'eal_thread.c',
+ 'getopt.c',
)
--
2.18.0.windows.1
next prev parent reply other threads:[~2020-02-01 0:06 UTC|newest]
Thread overview: 149+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-06 22:09 [dpdk-dev] [PATCH 0/9] Windows patchset with additional EAL functionalities Pallavi Kadam
2019-09-06 22:09 ` [dpdk-dev] [PATCH 1/9] eal: eal stub to support parsing feature on windows Pallavi Kadam
2019-09-06 22:09 ` [dpdk-dev] [PATCH 2/9] eal: syslog implementation for windows Pallavi Kadam
2019-09-06 22:09 ` [dpdk-dev] [PATCH 3/9] eal: add windows compatible header files Pallavi Kadam
2019-09-06 22:09 ` [dpdk-dev] [PATCH 4/9] eal: dirent.h implementation for windows Pallavi Kadam
2019-09-06 22:09 ` [dpdk-dev] [PATCH 5/9] eal: add additional function overrides in windows header files Pallavi Kadam
2019-09-06 22:09 ` [dpdk-dev] [PATCH 6/9] eal: getopt implementation for windows Pallavi Kadam
2019-09-06 22:09 ` [dpdk-dev] [PATCH 7/9] eal: add function to detect process type Pallavi Kadam
2019-09-06 22:09 ` [dpdk-dev] [PATCH 8/9] build: add additional common files support Pallavi Kadam
2019-09-06 22:09 ` [dpdk-dev] [PATCH 9/9] eal: add minimum viable code to support parsing Pallavi Kadam
2019-09-09 19:53 ` [dpdk-dev] [PATCH 0/9] Windows patchset with additional EAL functionalities Pallavi Kadam
2019-09-09 19:53 ` [dpdk-dev] [PATCH 1/9] eal: eal stub to support parsing feature on windows Pallavi Kadam
2019-09-09 19:53 ` [dpdk-dev] [PATCH 2/9] eal: syslog implementation for windows Pallavi Kadam
2019-09-10 9:17 ` Stephen Hemminger
2019-09-25 23:38 ` Pallavi Kadam
2019-09-09 19:53 ` [dpdk-dev] [PATCH 3/9] eal: add windows compatible header files Pallavi Kadam
2019-09-10 9:19 ` Stephen Hemminger
2019-09-12 17:11 ` Pallavi Kadam
2019-09-12 21:36 ` Stephen Hemminger
2019-09-09 19:53 ` [dpdk-dev] [PATCH 4/9] eal: dirent.h implementation for windows Pallavi Kadam
2019-09-09 19:54 ` [dpdk-dev] [PATCH 5/9] eal: add additional function overrides in windows header files Pallavi Kadam
2019-09-09 19:54 ` [dpdk-dev] [PATCH 6/9] eal: getopt implementation for windows Pallavi Kadam
2019-09-12 21:40 ` Stephen Hemminger
2019-09-13 9:46 ` Bruce Richardson
2019-09-13 17:23 ` Pallavi Kadam
2019-09-09 19:54 ` [dpdk-dev] [PATCH 7/9] eal: add function to detect process type Pallavi Kadam
2019-09-09 19:54 ` [dpdk-dev] [PATCH 8/9] build: add additional common files support Pallavi Kadam
2019-09-09 19:54 ` [dpdk-dev] [PATCH 9/9] eal: add minimum viable code to support parsing Pallavi Kadam
2019-09-26 20:29 ` [dpdk-dev] [PATCH v2 0/9] Windows patchset with additional EAL functionalities Pallavi Kadam
2019-09-26 20:29 ` [dpdk-dev] [PATCH v2 1/9] eal: eal stub to support parsing feature on windows Pallavi Kadam
2019-09-26 20:29 ` [dpdk-dev] [PATCH v2 2/9] eal: syslog implementation for windows Pallavi Kadam
2019-09-26 20:29 ` [dpdk-dev] [PATCH v2 3/9] eal: add windows compatible header files Pallavi Kadam
2019-09-27 7:58 ` Jerin Jacob
2019-09-30 17:49 ` Pallavi Kadam
2019-10-01 5:56 ` Jerin Jacob
2019-10-03 0:40 ` Pallavi Kadam
2019-09-26 20:29 ` [dpdk-dev] [PATCH v2 4/9] eal: dirent.h implementation for windows Pallavi Kadam
2019-09-26 20:29 ` [dpdk-dev] [PATCH v2 5/9] eal: add additional function overrides in windows header files Pallavi Kadam
2019-09-27 8:06 ` Jerin Jacob
2019-09-30 23:11 ` Pallavi Kadam
2019-09-26 20:29 ` [dpdk-dev] [PATCH v2 6/9] eal: getopt implementation for windows Pallavi Kadam
2019-09-26 21:27 ` Stephen Hemminger
2019-09-26 23:26 ` Pallavi Kadam
2019-09-26 20:29 ` [dpdk-dev] [PATCH v2 7/9] eal: add function to detect process type Pallavi Kadam
2019-09-26 20:29 ` [dpdk-dev] [PATCH v2 8/9] build: add additional common files support Pallavi Kadam
2019-09-26 20:29 ` [dpdk-dev] [PATCH v2 9/9] eal: add minimum viable code to support parsing Pallavi Kadam
2019-10-22 20:02 ` [dpdk-dev] [PATCH v3 0/9] Windows patchset with additional EAL functionalities Pallavi Kadam
2019-10-22 20:02 ` [dpdk-dev] [PATCH v3 1/9] eal: eal stub to support parsing feature on windows Pallavi Kadam
2019-10-22 20:02 ` [dpdk-dev] [PATCH v3 2/9] eal: syslog implementation for windows Pallavi Kadam
2019-10-22 20:02 ` [dpdk-dev] [PATCH v3 3/9] eal: add windows compatible header files Pallavi Kadam
2019-10-22 20:02 ` [dpdk-dev] [PATCH v3 4/9] eal: dirent.h implementation for windows Pallavi Kadam
2019-10-22 20:02 ` [dpdk-dev] [PATCH v3 5/9] eal: add additional function overrides in windows header files Pallavi Kadam
2019-10-22 20:02 ` [dpdk-dev] [PATCH v3 6/9] eal: getopt implementation for windows Pallavi Kadam
2019-10-22 20:02 ` [dpdk-dev] [PATCH v3 7/9] eal: add function to detect process type Pallavi Kadam
2019-10-22 20:02 ` [dpdk-dev] [PATCH v3 8/9] build: add additional common files support Pallavi Kadam
2019-10-22 20:02 ` [dpdk-dev] [PATCH v3 9/9] eal: add minimum viable code to support parsing Pallavi Kadam
2020-01-09 3:13 ` [dpdk-dev] [PATCH v4 0/9] Windows patchset with additional EAL functionalities Pallavi Kadam
2020-01-09 3:13 ` [dpdk-dev] [PATCH v4 1/9] license: add license exception for windows Pallavi Kadam
2020-01-09 3:13 ` [dpdk-dev] [PATCH v4 2/9] eal: dirent.h implementation " Pallavi Kadam
2020-01-09 3:13 ` [dpdk-dev] [PATCH v4 3/9] eal: add windows compatible header files Pallavi Kadam
2020-01-09 3:13 ` [dpdk-dev] [PATCH v4 4/9] eal: add additional function overrides in windows " Pallavi Kadam
2020-01-09 3:13 ` [dpdk-dev] [PATCH v4 5/9] eal: getopt implementation for windows Pallavi Kadam
2020-01-09 3:13 ` [dpdk-dev] [PATCH v4 6/9] eal: add function to detect process type Pallavi Kadam
2020-01-09 6:35 ` Stephen Hemminger
2020-01-09 22:18 ` Pallavi Kadam
2020-01-09 3:13 ` [dpdk-dev] [PATCH v4 7/9] eal: remove syslog support for windows Pallavi Kadam
2020-01-09 3:13 ` [dpdk-dev] [PATCH v4 8/9] build: add additional common files support Pallavi Kadam
2020-01-09 3:13 ` [dpdk-dev] [PATCH v4 9/9] eal: add minimum viable code to support parsing Pallavi Kadam
2020-01-13 21:55 ` [dpdk-dev] [PATCH v5 0/9] Windows patchset with additional EAL functionalities Pallavi Kadam
2020-01-13 21:55 ` [dpdk-dev] [PATCH v5 1/9] license: add license exception for windows Pallavi Kadam
2020-01-13 21:55 ` [dpdk-dev] [PATCH v5 2/9] eal: dirent.h implementation " Pallavi Kadam
2020-01-13 21:55 ` [dpdk-dev] [PATCH v5 3/9] eal: add windows compatible header files Pallavi Kadam
2020-01-27 22:41 ` Thomas Monjalon
2020-01-28 23:34 ` Pallavi Kadam
2020-01-13 21:55 ` [dpdk-dev] [PATCH v5 4/9] eal: add additional function overrides in windows " Pallavi Kadam
2020-01-13 21:55 ` [dpdk-dev] [PATCH v5 5/9] eal: getopt implementation for windows Pallavi Kadam
2020-01-13 21:55 ` [dpdk-dev] [PATCH v5 6/9] eal: add function to detect process type Pallavi Kadam
2020-01-13 21:55 ` [dpdk-dev] [PATCH v5 7/9] eal: remove syslog support for windows Pallavi Kadam
2020-01-27 22:52 ` Thomas Monjalon
2020-01-28 23:45 ` Pallavi Kadam
2020-01-13 21:55 ` [dpdk-dev] [PATCH v5 8/9] build: add additional common files support Pallavi Kadam
2020-01-27 22:55 ` Thomas Monjalon
2020-01-28 23:46 ` Pallavi Kadam
2020-01-13 21:55 ` [dpdk-dev] [PATCH v5 9/9] eal: add minimum viable code to support parsing Pallavi Kadam
2020-01-31 0:02 ` [dpdk-dev] [PATCH v6 00/10] Windows patchset with additional EAL functionalities Pallavi Kadam
2020-01-31 0:02 ` [dpdk-dev] [PATCH v6 01/10] license: add license exception for windows Pallavi Kadam
2020-01-31 0:02 ` [dpdk-dev] [PATCH v6 02/10] eal: dirent.h implementation " Pallavi Kadam
2020-01-31 0:03 ` [dpdk-dev] [PATCH v6 03/10] eal: include filesystem " Pallavi Kadam
2020-01-31 6:04 ` Dmitry Kozliuk
2020-01-31 22:03 ` Pallavi Kadam
2020-01-31 0:03 ` [dpdk-dev] [PATCH v6 04/10] eal: add additional function overrides in windows header files Pallavi Kadam
2020-01-31 0:03 ` [dpdk-dev] [PATCH v6 05/10] eal: getopt implementation for windows Pallavi Kadam
2020-01-31 0:03 ` [dpdk-dev] [PATCH v6 06/10] eal: add function to detect process type Pallavi Kadam
2020-01-31 0:03 ` [dpdk-dev] [PATCH v6 07/10] eal: include SSE4 support for windows Pallavi Kadam
2020-01-31 0:03 ` [dpdk-dev] [PATCH v6 08/10] eal: remove syslog and dlfcn " Pallavi Kadam
2020-01-31 0:03 ` [dpdk-dev] [PATCH v6 09/10] build: add additional common files support Pallavi Kadam
2020-01-31 0:03 ` [dpdk-dev] [PATCH v6 10/10] eal: add minimum viable code to support parsing Pallavi Kadam
2020-02-01 0:03 ` [dpdk-dev] [PATCH v7 0/9] Windows patchset with additional EAL functionalities Pallavi Kadam
2020-02-01 0:03 ` [dpdk-dev] [PATCH v7 1/9] license: add license exception for windows Pallavi Kadam
2020-02-01 0:03 ` [dpdk-dev] [PATCH v7 2/9] eal: dirent.h implementation " Pallavi Kadam
2020-02-01 0:04 ` [dpdk-dev] [PATCH v7 3/9] eal: add additional function overrides in windows header files Pallavi Kadam
2020-02-05 19:54 ` Dmitry Kozlyuk
2020-02-01 0:04 ` Pallavi Kadam [this message]
2020-02-01 0:04 ` [dpdk-dev] [PATCH v7 5/9] eal: add function to detect process type Pallavi Kadam
2020-02-05 20:04 ` Dmitry Kozlyuk
2020-02-06 0:56 ` Pallavi Kadam
2020-02-01 0:04 ` [dpdk-dev] [PATCH v7 6/9] eal: include SSE4 support for windows Pallavi Kadam
2020-02-01 0:04 ` [dpdk-dev] [PATCH v7 7/9] eal: remove syslog and dlfcn " Pallavi Kadam
2020-02-01 0:04 ` [dpdk-dev] [PATCH v7 8/9] build: add additional common files support Pallavi Kadam
2020-02-01 0:04 ` [dpdk-dev] [PATCH v7 9/9] eal: add minimum viable code to support parsing Pallavi Kadam
2020-02-05 19:54 ` Dmitry Kozlyuk
2020-02-06 0:39 ` Pallavi Kadam
2020-02-06 1:39 ` Pallavi Kadam
2020-02-06 2:11 ` Thomas Monjalon
2020-02-06 3:18 ` Pallavi Kadam
2020-02-06 6:41 ` Dmitry Kozlyuk
2020-02-06 9:26 ` Thomas Monjalon
2020-02-07 16:46 ` Ranjit Menon
2020-02-07 17:17 ` Ranjit Menon
2020-02-08 0:43 ` [dpdk-dev] [EXTERNAL] " Narcisa Ana Maria Vasile
2020-02-07 3:45 ` [dpdk-dev] " Pallavi Kadam
2020-02-07 3:14 ` [dpdk-dev] [PATCH v8 0/9] Windows patchset with additional EAL functionalities Pallavi Kadam
2020-02-07 3:14 ` [dpdk-dev] [PATCH v8 1/9] license: add license exception for windows Pallavi Kadam
2020-02-12 0:38 ` [dpdk-dev] [EXTERNAL] " Narcisa Ana Maria Vasile
2020-02-12 21:38 ` [dpdk-dev] " Thomas Monjalon
2020-02-12 21:55 ` Ranjit Menon
2020-02-07 3:14 ` [dpdk-dev] [PATCH v8 2/9] eal: dirent.h implementation " Pallavi Kadam
2020-02-12 0:40 ` [dpdk-dev] [EXTERNAL] " Narcisa Ana Maria Vasile
2020-02-07 3:14 ` [dpdk-dev] [PATCH v8 3/9] eal: add additional function overrides in windows header files Pallavi Kadam
2020-02-12 0:40 ` [dpdk-dev] [EXTERNAL] " Narcisa Ana Maria Vasile
2020-02-07 3:14 ` [dpdk-dev] [PATCH v8 4/9] eal: getopt implementation for windows Pallavi Kadam
2020-02-12 0:41 ` [dpdk-dev] [EXTERNAL] " Narcisa Ana Maria Vasile
2020-02-07 3:14 ` [dpdk-dev] [PATCH v8 5/9] eal: add function to detect process type Pallavi Kadam
2020-02-12 0:42 ` [dpdk-dev] [EXTERNAL] " Narcisa Ana Maria Vasile
2020-02-07 3:14 ` [dpdk-dev] [PATCH v8 6/9] eal: include SSE4 support for windows Pallavi Kadam
2020-02-12 0:42 ` [dpdk-dev] [EXTERNAL] " Narcisa Ana Maria Vasile
2020-02-07 3:14 ` [dpdk-dev] [PATCH v8 7/9] eal: remove syslog and dlfcn " Pallavi Kadam
2020-02-12 0:42 ` [dpdk-dev] [EXTERNAL] " Narcisa Ana Maria Vasile
2020-02-07 3:14 ` [dpdk-dev] [PATCH v8 8/9] build: add additional common files support Pallavi Kadam
2020-02-12 0:42 ` [dpdk-dev] [EXTERNAL] " Narcisa Ana Maria Vasile
2020-02-07 3:14 ` [dpdk-dev] [PATCH v8 9/9] eal: add minimum viable code to support parsing Pallavi Kadam
2020-02-12 0:43 ` [dpdk-dev] [EXTERNAL] " Narcisa Ana Maria Vasile
2020-02-07 19:05 ` [dpdk-dev] [PATCH v8 0/9] Windows patchset with additional EAL functionalities Dmitry Kozlyuk
2020-02-12 21:52 ` Thomas Monjalon
2020-02-08 0:36 ` [dpdk-dev] [EXTERNAL] " Narcisa Ana Maria Vasile
2020-02-08 1:04 ` Narcisa Ana Maria Vasile
2020-02-10 20:32 ` Narcisa Ana Maria Vasile
2020-02-10 21:22 ` Narcisa Ana Maria Vasile
2020-02-11 21:25 ` Narcisa Ana Maria Vasile
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=20200201000406.11060-5-pallavi.kadam@intel.com \
--to=pallavi.kadam@intel.com \
--cc=Harini.Ramakrishnan@microsoft.com \
--cc=antara.ganesh.kolar@intel.com \
--cc=bruce.richardson@intel.com \
--cc=david.marchand@redhat.com \
--cc=dev@dpdk.org \
--cc=jerinjacobk@gmail.com \
--cc=keith.wiles@intel.com \
--cc=ranjit.menon@intel.com \
--cc=thomas@monjalon.net \
/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).