On 1/22/2019 1:22 PM, Ilya Maximets wrote:
No need to implement dynamic vector to store arguments.
'svec' perfectly covers all the needed functionality.


Thanks for this Ilya, testing this this the last few days and seems in working order, I see Aaron has also acked this, I just have one comment below:

Signed-off-by: Ilya Maximets <i.maxim...@samsung.com>
---
  lib/dpdk.c | 217 ++++++++++++++++-------------------------------------
  1 file changed, 66 insertions(+), 151 deletions(-)

diff --git a/lib/dpdk.c b/lib/dpdk.c
index 0ee3e19c6..d70884aad 100644
--- a/lib/dpdk.c
+++ b/lib/dpdk.c
@@ -38,6 +38,7 @@
  #include "openvswitch/vlog.h"
  #include "ovs-numa.h"
  #include "smap.h"
+#include "svec.h"
  #include "vswitch-idl.h"
VLOG_DEFINE_THIS_MODULE(dpdk);
@@ -75,65 +76,23 @@ process_vhost_flags(char *flag, const char *default_val, 
int size,
      return changed;
  }
-static char **
-grow_argv(char ***argv, size_t cur_siz, size_t grow_by)
-{
-    return xrealloc(*argv, sizeof(char *) * (cur_siz + grow_by));
-}
-
-static void
-dpdk_option_extend(char ***argv, int argc, const char *option,
-                   const char *value)
-{
-    char **newargv = grow_argv(argv, argc, 2);
-    *argv = newargv;
-    newargv[argc] = xstrdup(option);
-    newargv[argc+1] = xstrdup(value);
-}
-
-static char **
-move_argv(char ***argv, size_t cur_size, char **src_argv, size_t src_argc)
-{
-    char **newargv = grow_argv(argv, cur_size, src_argc);
-    while (src_argc--) {
-        newargv[cur_size+src_argc] = src_argv[src_argc];
-        src_argv[src_argc] = NULL;
-    }
-    return newargv;
-}
-
-static int
-extra_dpdk_args(const char *ovs_extra_config, char ***argv, int argc)
-{
-    int ret = argc;
-    char *release_tok = xstrdup(ovs_extra_config);
-    char *tok, *endptr = NULL;
-
-    for (tok = strtok_r(release_tok, " ", &endptr); tok != NULL;
-         tok = strtok_r(NULL, " ", &endptr)) {
-        char **newarg = grow_argv(argv, ret, 1);
-        *argv = newarg;
-        newarg[ret++] = xstrdup(tok);
-    }
-    free(release_tok);
-    return ret;
-}
-
  static bool
-argv_contains(char **argv_haystack, const size_t argc_haystack,
-              const char *needle)
+args_contains(const struct svec *args, const char *needle)

I think 'needle' only makes sense as an argument name when haystack was also passed :), but without haystack it seems arbitrary, I suggest it be changed to something like like value.

Ian
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to