From: "Van Haaren, Harry" <harry.van.haaren@intel.com>
To: Jerin Jacob <jerin.jacob@caviumnetworks.com>,
"dev@dpdk.org" <dev@dpdk.org>
Cc: "Richardson, Bruce" <bruce.richardson@intel.com>,
"hemant.agrawal@nxp.com" <hemant.agrawal@nxp.com>,
"Eads, Gage" <gage.eads@intel.com>,
"nipun.gupta@nxp.com" <nipun.gupta@nxp.com>,
"Vangati, Narender" <narender.vangati@intel.com>,
"Rao, Nikhil" <nikhil.rao@intel.com>,
"gprathyusha@caviumnetworks.com" <gprathyusha@caviumnetworks.com>
Subject: Re: [dpdk-dev] [PATCH 04/33] app/testeventdev: add string parsing helpers
Date: Fri, 23 Jun 2017 12:30:04 +0000 [thread overview]
Message-ID: <E923DB57A917B54B9182A2E928D00FA640C31538@IRSMSX102.ger.corp.intel.com> (raw)
In-Reply-To: <20170528195854.6064-5-jerin.jacob@caviumnetworks.com>
> From: Jerin Jacob [mailto:jerin.jacob@caviumnetworks.com]
> Sent: Sunday, May 28, 2017 8:58 PM
> To: dev@dpdk.org
> Cc: Richardson, Bruce <bruce.richardson@intel.com>; Van Haaren, Harry
> <harry.van.haaren@intel.com>; hemant.agrawal@nxp.com; Eads, Gage <gage.eads@intel.com>;
> nipun.gupta@nxp.com; Vangati, Narender <narender.vangati@intel.com>; Rao, Nikhil
> <nikhil.rao@intel.com>; gprathyusha@caviumnetworks.com
> Subject: [dpdk-dev] [PATCH 04/33] app/testeventdev: add string parsing helpers
>
> From: Guduri Prathyusha <gprathyusha@caviumnetworks.com>
>
> Add a couple of help functions that will allow parsing many types of
> input parameters, i.e.: bool, 16, 32, 64 bits, hex and list of cores etc.
>
> Derived from examples/ip_pipeline/parser.h
>
> Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com>
I'm not sure about the licenses, but here's an Ack for the code:
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
> ---
> app/test-eventdev/Makefile | 1 +
> app/test-eventdev/parser.c | 432 +++++++++++++++++++++++++++++++++++++++++++++
> app/test-eventdev/parser.h | 79 +++++++++
> 3 files changed, 512 insertions(+)
> create mode 100644 app/test-eventdev/parser.c
> create mode 100644 app/test-eventdev/parser.h
>
> diff --git a/app/test-eventdev/Makefile b/app/test-eventdev/Makefile
> index 8f4fc5f45..2e552a084 100644
> --- a/app/test-eventdev/Makefile
> +++ b/app/test-eventdev/Makefile
> @@ -40,5 +40,6 @@ CFLAGS += $(WERROR_FLAGS)
> #
> SRCS-y := evt_main.c
> SRCS-y += evt_test.c
> +SRCS-y += parser.c
>
> include $(RTE_SDK)/mk/rte.app.mk
> diff --git a/app/test-eventdev/parser.c b/app/test-eventdev/parser.c
> new file mode 100644
> index 000000000..d267447a2
> --- /dev/null
> +++ b/app/test-eventdev/parser.c
> @@ -0,0 +1,432 @@
> +/*-
> + * BSD LICENSE
> + *
> + * Copyright(c) 2016 Intel Corporation. All rights reserved.
> + * All rights reserved.
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions
> + * are met:
> + *
> + * * Redistributions of source code must retain the above copyright
> + * notice, this list of conditions and the following disclaimer.
> + * * Redistributions in binary form must reproduce the above copyright
> + * notice, this list of conditions and the following disclaimer in
> + * the documentation and/or other materials provided with the
> + * distribution.
> + * * Neither the name of Intel Corporation nor the names of its
> + * contributors may be used to endorse or promote products derived
> + * from this software without specific prior written permission.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
> + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
> + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
> + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
> + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
> + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
> + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
> + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
> + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
> + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> + */
> +
> +/*
> + * For my_ether_aton() function:
> + *
> + * Copyright (c) 2009, Olivier MATZ <zer0@droids-corp.org>
> + * All rights reserved.
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions are met:
> + *
> + * * Redistributions of source code must retain the above copyright
> + * notice, this list of conditions and the following disclaimer.
> + * * Redistributions in binary form must reproduce the above copyright
> + * notice, this list of conditions and the following disclaimer in the
> + * documentation and/or other materials provided with the distribution.
> + * * Neither the name of the University of California, Berkeley nor the
> + * names of its contributors may be used to endorse or promote products
> + * derived from this software without specific prior written permission.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
> + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
> + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
> + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
> + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
> + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
> + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
> + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
> + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
> + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> + */
> +
> +/*
> + * For inet_pton4() and inet_pton6() functions:
> + *
> + * Copyright (c) 1996 by Internet Software Consortium.
> + *
> + * Permission to use, copy, modify, and distribute this software for any
> + * purpose with or without fee is hereby granted, provided that the above
> + * copyright notice and this permission notice appear in all copies.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
> + * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
> + * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
> + * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
> + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
> + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
> + * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
> + * SOFTWARE.
> + */
> +
> +#include <stdint.h>
> +#include <stdlib.h>
> +#include <stdio.h>
> +#include <ctype.h>
> +#include <getopt.h>
> +#include <errno.h>
> +#include <stdarg.h>
> +#include <string.h>
> +#include <libgen.h>
> +#include <unistd.h>
> +#include <sys/wait.h>
> +#include <stdbool.h>
> +
> +#include <rte_errno.h>
> +#include <rte_string_fns.h>
> +
> +#include "parser.h"
> +
> +static uint32_t
> +get_hex_val(char c)
> +{
> + switch (c) {
> + case '0': case '1': case '2': case '3': case '4': case '5':
> + case '6': case '7': case '8': case '9':
> + return c - '0';
> + case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
> + return c - 'A' + 10;
> + case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
> + return c - 'a' + 10;
> + default:
> + return 0;
> + }
> +}
> +
> +int
> +parser_read_arg_bool(const char *p)
> +{
> + p = skip_white_spaces(p);
> + int result = -EINVAL;
> +
> + if (((p[0] == 'y') && (p[1] == 'e') && (p[2] == 's')) ||
> + ((p[0] == 'Y') && (p[1] == 'E') && (p[2] == 'S'))) {
> + p += 3;
> + result = 1;
> + }
> +
> + if (((p[0] == 'o') && (p[1] == 'n')) ||
> + ((p[0] == 'O') && (p[1] == 'N'))) {
> + p += 2;
> + result = 1;
> + }
> +
> + if (((p[0] == 'n') && (p[1] == 'o')) ||
> + ((p[0] == 'N') && (p[1] == 'O'))) {
> + p += 2;
> + result = 0;
> + }
> +
> + if (((p[0] == 'o') && (p[1] == 'f') && (p[2] == 'f')) ||
> + ((p[0] == 'O') && (p[1] == 'F') && (p[2] == 'F'))) {
> + p += 3;
> + result = 0;
> + }
> +
> + p = skip_white_spaces(p);
> +
> + if (p[0] != '\0')
> + return -EINVAL;
> +
> + return result;
> +}
> +
> +int
> +parser_read_uint64(uint64_t *value, const char *p)
> +{
> + char *next;
> + uint64_t val;
> +
> + p = skip_white_spaces(p);
> + if (!isdigit(*p))
> + return -EINVAL;
> +
> + val = strtoul(p, &next, 10);
> + if (p == next)
> + return -EINVAL;
> +
> + p = next;
> + switch (*p) {
> + case 'T':
> + val *= 1024ULL;
> + /* fall through */
> + case 'G':
> + val *= 1024ULL;
> + /* fall through */
> + case 'M':
> + val *= 1024ULL;
> + /* fall through */
> + case 'k':
> + case 'K':
> + val *= 1024ULL;
> + p++;
> + break;
> + }
> +
> + p = skip_white_spaces(p);
> + if (*p != '\0')
> + return -EINVAL;
> +
> + *value = val;
> + return 0;
> +}
> +
> +int
> +parser_read_int32(int32_t *value, const char *p)
> +{
> + char *next;
> + int32_t val;
> +
> + p = skip_white_spaces(p);
> + if (!isdigit(*p))
> + return -EINVAL;
> +
> + val = strtol(p, &next, 10);
> + if (p == next)
> + return -EINVAL;
> +
> + *value = val;
> + return 0;
> +}
> +
> +int
> +parser_read_uint64_hex(uint64_t *value, const char *p)
> +{
> + char *next;
> + uint64_t val;
> +
> + p = skip_white_spaces(p);
> +
> + val = strtoul(p, &next, 16);
> + if (p == next)
> + return -EINVAL;
> +
> + p = skip_white_spaces(next);
> + if (*p != '\0')
> + return -EINVAL;
> +
> + *value = val;
> + return 0;
> +}
> +
> +int
> +parser_read_uint32(uint32_t *value, const char *p)
> +{
> + uint64_t val = 0;
> + int ret = parser_read_uint64(&val, p);
> +
> + if (ret < 0)
> + return ret;
> +
> + if (val > UINT32_MAX)
> + return -ERANGE;
> +
> + *value = val;
> + return 0;
> +}
> +
> +int
> +parser_read_uint32_hex(uint32_t *value, const char *p)
> +{
> + uint64_t val = 0;
> + int ret = parser_read_uint64_hex(&val, p);
> +
> + if (ret < 0)
> + return ret;
> +
> + if (val > UINT32_MAX)
> + return -ERANGE;
> +
> + *value = val;
> + return 0;
> +}
> +
> +int
> +parser_read_uint16(uint16_t *value, const char *p)
> +{
> + uint64_t val = 0;
> + int ret = parser_read_uint64(&val, p);
> +
> + if (ret < 0)
> + return ret;
> +
> + if (val > UINT16_MAX)
> + return -ERANGE;
> +
> + *value = val;
> + return 0;
> +}
> +
> +int
> +parser_read_uint16_hex(uint16_t *value, const char *p)
> +{
> + uint64_t val = 0;
> + int ret = parser_read_uint64_hex(&val, p);
> +
> + if (ret < 0)
> + return ret;
> +
> + if (val > UINT16_MAX)
> + return -ERANGE;
> +
> + *value = val;
> + return 0;
> +}
> +
> +int
> +parser_read_uint8(uint8_t *value, const char *p)
> +{
> + uint64_t val = 0;
> + int ret = parser_read_uint64(&val, p);
> +
> + if (ret < 0)
> + return ret;
> +
> + if (val > UINT8_MAX)
> + return -ERANGE;
> +
> + *value = val;
> + return 0;
> +}
> +
> +int
> +parser_read_uint8_hex(uint8_t *value, const char *p)
> +{
> + uint64_t val = 0;
> + int ret = parser_read_uint64_hex(&val, p);
> +
> + if (ret < 0)
> + return ret;
> +
> + if (val > UINT8_MAX)
> + return -ERANGE;
> +
> + *value = val;
> + return 0;
> +}
> +
> +int
> +parse_tokenize_string(char *string, char *tokens[], uint32_t *n_tokens)
> +{
> + uint32_t i;
> +
> + if ((string == NULL) ||
> + (tokens == NULL) ||
> + (*n_tokens < 1))
> + return -EINVAL;
> +
> + for (i = 0; i < *n_tokens; i++) {
> + tokens[i] = strtok_r(string, PARSE_DELIMITER, &string);
> + if (tokens[i] == NULL)
> + break;
> + }
> +
> + if ((i == *n_tokens) &&
> + (strtok_r(string, PARSE_DELIMITER, &string) != NULL))
> + return -E2BIG;
> +
> + *n_tokens = i;
> + return 0;
> +}
> +
> +int
> +parse_hex_string(char *src, uint8_t *dst, uint32_t *size)
> +{
> + char *c;
> + uint32_t len, i;
> +
> + /* Check input parameters */
> + if ((src == NULL) ||
> + (dst == NULL) ||
> + (size == NULL) ||
> + (*size == 0))
> + return -1;
> +
> + len = strlen(src);
> + if (((len & 3) != 0) ||
> + (len > (*size) * 2))
> + return -1;
> + *size = len / 2;
> +
> + for (c = src; *c != 0; c++) {
> + if ((((*c) >= '0') && ((*c) <= '9')) ||
> + (((*c) >= 'A') && ((*c) <= 'F')) ||
> + (((*c) >= 'a') && ((*c) <= 'f')))
> + continue;
> +
> + return -1;
> + }
> +
> + /* Convert chars to bytes */
> + for (i = 0; i < *size; i++)
> + dst[i] = get_hex_val(src[2 * i]) * 16 +
> + get_hex_val(src[2 * i + 1]);
> +
> + return 0;
> +}
> +
> +int
> +parse_lcores_list(bool lcores[], const char *corelist)
> +{
> + int i, idx = 0;
> + int min, max;
> + char *end = NULL;
> +
> + if (corelist == NULL)
> + return -1;
> + while (isblank(*corelist))
> + corelist++;
> + i = strlen(corelist);
> + while ((i > 0) && isblank(corelist[i - 1]))
> + i--;
> +
> + /* Get list of lcores */
> + min = RTE_MAX_LCORE;
> + do {
> + while (isblank(*corelist))
> + corelist++;
> + if (*corelist == '\0')
> + return -1;
> + idx = strtoul(corelist, &end, 10);
> +
> + if (end == NULL)
> + return -1;
> + while (isblank(*end))
> + end++;
> + if (*end == '-') {
> + min = idx;
> + } else if ((*end == ',') || (*end == '\0')) {
> + max = idx;
> + if (min == RTE_MAX_LCORE)
> + min = idx;
> + for (idx = min; idx <= max; idx++)
> + lcores[idx] = 1;
> +
> + min = RTE_MAX_LCORE;
> + } else
> + return -1;
> + corelist = end + 1;
> + } while (*end != '\0');
> +
> + return 0;
> +}
> diff --git a/app/test-eventdev/parser.h b/app/test-eventdev/parser.h
> new file mode 100644
> index 000000000..75a5a3b45
> --- /dev/null
> +++ b/app/test-eventdev/parser.h
> @@ -0,0 +1,79 @@
> +/*-
> + * BSD LICENSE
> + *
> + * Copyright(c) 2010-2016 Intel Corporation. All rights reserved.
> + * All rights reserved.
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions
> + * are met:
> + *
> + * * Redistributions of source code must retain the above copyright
> + * notice, this list of conditions and the following disclaimer.
> + * * Redistributions in binary form must reproduce the above copyright
> + * notice, this list of conditions and the following disclaimer in
> + * the documentation and/or other materials provided with the
> + * distribution.
> + * * Neither the name of Intel Corporation nor the names of its
> + * contributors may be used to endorse or promote products derived
> + * from this software without specific prior written permission.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
> + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
> + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
> + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
> + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
> + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
> + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
> + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
> + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
> + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> + */
> +
> +#ifndef __INCLUDE_PARSER_H__
> +#define __INCLUDE_PARSER_H__
> +
> +#include <stdint.h>
> +
> +#define PARSE_DELIMITER " \f\n\r\t\v"
> +
> +#define skip_white_spaces(pos) \
> +({ \
> + __typeof__(pos) _p = (pos); \
> + for ( ; isspace(*_p); _p++) \
> + ; \
> + _p; \
> +})
> +
> +static inline size_t
> +skip_digits(const char *src)
> +{
> + size_t i;
> +
> + for (i = 0; isdigit(src[i]); i++)
> + ;
> +
> + return i;
> +}
> +
> +int parser_read_arg_bool(const char *p);
> +
> +int parser_read_uint64(uint64_t *value, const char *p);
> +int parser_read_uint32(uint32_t *value, const char *p);
> +int parser_read_uint16(uint16_t *value, const char *p);
> +int parser_read_uint8(uint8_t *value, const char *p);
> +
> +int parser_read_uint64_hex(uint64_t *value, const char *p);
> +int parser_read_uint32_hex(uint32_t *value, const char *p);
> +int parser_read_uint16_hex(uint16_t *value, const char *p);
> +int parser_read_uint8_hex(uint8_t *value, const char *p);
> +
> +int parser_read_int32(int32_t *value, const char *p);
> +
> +int parse_hex_string(char *src, uint8_t *dst, uint32_t *size);
> +
> +int parse_tokenize_string(char *string, char *tokens[], uint32_t *n_tokens);
> +
> +int parse_lcores_list(bool lcores[], const char *corelist);
> +#endif
> --
> 2.13.0
next prev parent reply other threads:[~2017-06-23 12:30 UTC|newest]
Thread overview: 133+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-28 19:58 [dpdk-dev] [PATCH 00/33] introduce generic eventdev test application framework Jerin Jacob
2017-05-28 19:58 ` [dpdk-dev] [PATCH 01/33] app/testeventdev: introduce dpdk-test-eventdev application Jerin Jacob
2017-06-23 12:23 ` Van Haaren, Harry
2017-05-28 19:58 ` [dpdk-dev] [PATCH 02/33] app/testeventdev: define eventdev test ops Jerin Jacob
2017-06-01 20:44 ` Eads, Gage
2017-06-23 12:27 ` Van Haaren, Harry
2017-05-28 19:58 ` [dpdk-dev] [PATCH 03/33] app/testeventdev: add eventdev test registration framework Jerin Jacob
2017-06-23 12:28 ` Van Haaren, Harry
2017-05-28 19:58 ` [dpdk-dev] [PATCH 04/33] app/testeventdev: add string parsing helpers Jerin Jacob
2017-06-23 12:30 ` Van Haaren, Harry [this message]
2017-05-28 19:58 ` [dpdk-dev] [PATCH 05/33] app/testeventdev: add common helper functions Jerin Jacob
2017-05-28 19:58 ` [dpdk-dev] [PATCH 06/33] app/testeventdev: define the test options Jerin Jacob
2017-06-23 13:07 ` Van Haaren, Harry
2017-07-03 7:10 ` Jerin Jacob
2017-05-28 19:58 ` [dpdk-dev] [PATCH 07/33] app/testeventdev: add helper functions to check options Jerin Jacob
2017-05-28 19:58 ` [dpdk-dev] [PATCH 08/33] app/testeventdev: add helper functions to dump options Jerin Jacob
2017-05-28 19:58 ` [dpdk-dev] [PATCH 09/33] app/testeventdev: update options through the command line Jerin Jacob
2017-05-28 19:58 ` [dpdk-dev] [PATCH 10/33] app/testeventdev: invoke the test ops Jerin Jacob
2017-05-28 19:58 ` [dpdk-dev] [PATCH 11/33] app/testeventdev: add the signal handler Jerin Jacob
2017-05-28 19:58 ` [dpdk-dev] [PATCH 12/33] app/testeventdev: order: add test setup and destroy Jerin Jacob
2017-05-28 19:58 ` [dpdk-dev] [PATCH 13/33] app/testeventdev: order: add basic functions Jerin Jacob
2017-05-28 19:58 ` [dpdk-dev] [PATCH 14/33] app/testeventdev: order: add eventdev port setup Jerin Jacob
2017-06-23 12:36 ` Van Haaren, Harry
2017-06-23 12:45 ` Jerin Jacob
2017-05-28 19:58 ` [dpdk-dev] [PATCH 15/33] app/testeventdev: order: launch lcores Jerin Jacob
2017-06-01 20:54 ` Eads, Gage
2017-05-28 19:58 ` [dpdk-dev] [PATCH 16/33] app/testeventdev: add order queue test Jerin Jacob
2017-05-28 19:58 ` [dpdk-dev] [PATCH 17/33] app/testeventdev: order queue: add worker functions Jerin Jacob
2017-05-28 19:58 ` [dpdk-dev] [PATCH 18/33] app/testeventdev: add order "all types queue" test Jerin Jacob
2017-05-28 19:58 ` [dpdk-dev] [PATCH 19/33] app/testeventdev: perf: add test setup and destroy Jerin Jacob
2017-05-28 19:58 ` [dpdk-dev] [PATCH 20/33] app/testeventdev: perf: add basic functions Jerin Jacob
2017-05-28 19:58 ` [dpdk-dev] [PATCH 21/33] app/testeventdev: perf: add opt dump and check functions Jerin Jacob
2017-05-28 19:58 ` [dpdk-dev] [PATCH 22/33] app/testeventdev: perf: add eventdev port setup Jerin Jacob
2017-06-23 12:42 ` Van Haaren, Harry
2017-05-28 19:58 ` [dpdk-dev] [PATCH 23/33] app/testeventdev: perf: launch lcores Jerin Jacob
2017-05-28 19:58 ` [dpdk-dev] [PATCH 24/33] app/testeventdev: add perf queue test Jerin Jacob
2017-06-23 12:47 ` Van Haaren, Harry
2017-07-03 8:38 ` Jerin Jacob
2017-05-28 19:58 ` [dpdk-dev] [PATCH 25/33] app/testeventdev: perf queue: add worker functions Jerin Jacob
2017-06-01 21:04 ` Eads, Gage
2017-06-02 12:21 ` Jerin Jacob
2017-05-28 19:58 ` [dpdk-dev] [PATCH 26/33] app/testeventdev: add perf "all types queue" test Jerin Jacob
2017-05-28 19:58 ` [dpdk-dev] [PATCH 27/33] app/testeventdev: perf: add "all type queue" worker function Jerin Jacob
2017-05-28 19:58 ` [dpdk-dev] [PATCH 28/33] doc: describe the new eventdev test application Jerin Jacob
2017-06-23 12:53 ` Van Haaren, Harry
2017-07-03 9:48 ` Jerin Jacob
2017-06-30 14:09 ` Mcnamara, John
2017-05-28 19:58 ` [dpdk-dev] [PATCH 29/33] doc/testeventdev: add "order queue" test details Jerin Jacob
2017-06-30 14:19 ` Mcnamara, John
2017-05-28 19:58 ` [dpdk-dev] [PATCH 30/33] doc/testeventdev: add "order all types " Jerin Jacob
2017-06-30 14:23 ` Mcnamara, John
2017-06-30 14:28 ` Mcnamara, John
2017-05-28 19:58 ` [dpdk-dev] [PATCH 31/33] doc/testeventdev: add "perf " Jerin Jacob
2017-06-01 21:11 ` Eads, Gage
2017-06-02 12:10 ` Jerin Jacob
2017-06-30 14:31 ` Mcnamara, John
2017-05-28 19:58 ` [dpdk-dev] [PATCH 32/33] doc/testeventdev: add "perf all types " Jerin Jacob
2017-06-23 12:56 ` Van Haaren, Harry
2017-05-28 19:58 ` [dpdk-dev] [PATCH 33/33] maintainers: claim responsibility for the eventdev test app Jerin Jacob
2017-06-23 12:58 ` Van Haaren, Harry
2017-06-23 12:21 ` [dpdk-dev] [PATCH 00/33] introduce generic eventdev test application framework Van Haaren, Harry
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 00/34] " Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 01/34] app/testeventdev: introduce dpdk-test-eventdev application Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 02/34] app/testeventdev: define eventdev test ops Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 03/34] app/testeventdev: add eventdev test registration framework Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 04/34] app/testeventdev: add string parsing helpers Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 05/34] app/testeventdev: add common helper functions Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 06/34] app/testeventdev: define the test options Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 07/34] app/testeventdev: add helper functions to check options Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 08/34] app/testeventdev: add helper functions to dump options Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 09/34] app/testeventdev: update options through the command line Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 10/34] app/testeventdev: invoke the test ops Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 11/34] app/testeventdev: add the signal handler Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 12/34] app/testeventdev: order: add test setup and destroy Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 13/34] app/testeventdev: order: add basic functions Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 14/34] app/testeventdev: order: add eventdev port setup Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 15/34] app/testeventdev: order: launch lcores Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 16/34] app/testeventdev: add order queue test Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 17/34] app/testeventdev: order queue: add worker functions Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 18/34] app/testeventdev: add order "all types queue" test Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 19/34] app/testeventdev: perf: add test setup and destroy Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 20/34] app/testeventdev: perf: add basic functions Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 21/34] app/testeventdev: perf: add opt dump and check functions Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 22/34] app/testeventdev: perf: add eventdev port setup Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 23/34] app/testeventdev: perf: launch lcores Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 24/34] app/testeventdev: add perf queue test Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 25/34] app/testeventdev: perf queue: add worker functions Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 26/34] app/testeventdev: add perf "all types queue" test Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 27/34] app/testeventdev: perf: add "all type queue" worker function Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 28/34] doc: describe the new eventdev test application Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 29/34] doc/testeventdev: add "order queue" test details Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 30/34] doc/testeventdev: add "order all types " Jerin Jacob
2017-07-03 19:13 ` [dpdk-dev] [PATCH v2 31/34] doc/testeventdev: add "perf " Jerin Jacob
2017-07-03 19:14 ` [dpdk-dev] [PATCH v2 32/34] doc/testeventdev: add "perf all types " Jerin Jacob
2017-07-03 19:14 ` [dpdk-dev] [PATCH v2 33/34] maintainers: claim responsibility for the eventdev test app Jerin Jacob
2017-07-03 19:14 ` [dpdk-dev] [PATCH v2 34/34] doc: update release notes for dpdk-test-eventdev application Jerin Jacob
2017-07-04 4:52 ` [dpdk-dev] [PATCH v3 00/34] introduce generic eventdev test application framework Jerin Jacob
2017-07-04 4:52 ` [dpdk-dev] [PATCH v3 01/34] app/testeventdev: introduce dpdk-test-eventdev application Jerin Jacob
2017-07-04 4:52 ` [dpdk-dev] [PATCH v3 02/34] app/testeventdev: define eventdev test ops Jerin Jacob
2017-07-04 4:52 ` [dpdk-dev] [PATCH v3 03/34] app/testeventdev: add eventdev test registration framework Jerin Jacob
2017-07-04 4:52 ` [dpdk-dev] [PATCH v3 04/34] app/testeventdev: add string parsing helpers Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 05/34] app/testeventdev: add common helper functions Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 06/34] app/testeventdev: define the test options Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 07/34] app/testeventdev: add helper functions to check options Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 08/34] app/testeventdev: add helper functions to dump options Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 09/34] app/testeventdev: update options through the command line Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 10/34] app/testeventdev: invoke the test ops Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 11/34] app/testeventdev: add the signal handler Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 12/34] app/testeventdev: order: add test setup and destroy Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 13/34] app/testeventdev: order: add basic functions Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 14/34] app/testeventdev: order: add eventdev port setup Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 15/34] app/testeventdev: order: launch lcores Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 16/34] app/testeventdev: add order queue test Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 17/34] app/testeventdev: order queue: add worker functions Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 18/34] app/testeventdev: add order "all types queue" test Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 19/34] app/testeventdev: perf: add test setup and destroy Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 20/34] app/testeventdev: perf: add basic functions Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 21/34] app/testeventdev: perf: add opt dump and check functions Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 22/34] app/testeventdev: perf: add eventdev port setup Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 23/34] app/testeventdev: perf: launch lcores Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 24/34] app/testeventdev: add perf queue test Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 25/34] app/testeventdev: perf queue: add worker functions Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 26/34] app/testeventdev: add perf "all types queue" test Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 27/34] app/testeventdev: perf: add "all type queue" worker function Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 28/34] doc: describe the new eventdev test application Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 29/34] doc/testeventdev: add "order queue" test details Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 30/34] doc/testeventdev: add "order all types " Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 31/34] doc/testeventdev: add "perf " Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 32/34] doc/testeventdev: add "perf all types " Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 33/34] maintainers: claim responsibility for the eventdev test app Jerin Jacob
2017-07-04 4:53 ` [dpdk-dev] [PATCH v3 34/34] doc: update release notes for dpdk-test-eventdev application Jerin Jacob
2017-07-04 11:33 ` Mcnamara, John
2017-07-07 5:48 ` [dpdk-dev] [PATCH v3 00/34] introduce generic eventdev test application framework Jerin Jacob
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=E923DB57A917B54B9182A2E928D00FA640C31538@IRSMSX102.ger.corp.intel.com \
--to=harry.van.haaren@intel.com \
--cc=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
--cc=gage.eads@intel.com \
--cc=gprathyusha@caviumnetworks.com \
--cc=hemant.agrawal@nxp.com \
--cc=jerin.jacob@caviumnetworks.com \
--cc=narender.vangati@intel.com \
--cc=nikhil.rao@intel.com \
--cc=nipun.gupta@nxp.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).