On Tue, Mar 27, 2018 at 01:18:34AM +0200, Gaetan Rivet wrote:
> Parse a device description.
> Split this description in their relevant part for each layers.
> No dynamic allocation is performed.
> 
> Cc: Neil Horman <nhor...@tuxdriver.com>
> Cc: "Wiles, Keith" <keith.wi...@intel.com>
> Signed-off-by: Gaetan Rivet <gaetan.ri...@6wind.com>
> ---
> 
> This version uses librte_kvargs.
> 
>  lib/Makefile                            |   1 +
>  lib/librte_eal/bsdapp/eal/Makefile      |   1 +
>  lib/librte_eal/common/eal_common_dev.c  | 147 
> ++++++++++++++++++++++++++++++++
>  lib/librte_eal/common/include/rte_dev.h |  23 +++++
>  lib/librte_eal/linuxapp/eal/Makefile    |   1 +
>  lib/librte_eal/rte_eal_version.map      |   1 +
>  6 files changed, 174 insertions(+)
> 
> diff --git a/lib/Makefile b/lib/Makefile
> index fc7a55a37..1b17526f7 100644
> --- a/lib/Makefile
> +++ b/lib/Makefile
> @@ -6,6 +6,7 @@ include $(RTE_SDK)/mk/rte.vars.mk
>  DIRS-y += librte_compat
>  DIRS-$(CONFIG_RTE_LIBRTE_KVARGS) += librte_kvargs
>  DIRS-$(CONFIG_RTE_LIBRTE_EAL) += librte_eal
> +DEPDIRS-librte_eal := librte_kvargs
>  DIRS-$(CONFIG_RTE_LIBRTE_PCI) += librte_pci
>  DEPDIRS-librte_pci := librte_eal
>  DIRS-$(CONFIG_RTE_LIBRTE_RING) += librte_ring
> diff --git a/lib/librte_eal/bsdapp/eal/Makefile 
> b/lib/librte_eal/bsdapp/eal/Makefile
> index 17ff1ac45..f6cea7fc2 100644
> --- a/lib/librte_eal/bsdapp/eal/Makefile
> +++ b/lib/librte_eal/bsdapp/eal/Makefile
> @@ -18,6 +18,7 @@ CFLAGS += $(WERROR_FLAGS) -O3
>  LDLIBS += -lexecinfo
>  LDLIBS += -lpthread
>  LDLIBS += -lgcc_s
> +LDLIBS += -lrte_kvargs
>  
>  EXPORT_MAP := ../../rte_eal_version.map
>  
> diff --git a/lib/librte_eal/common/eal_common_dev.c 
> b/lib/librte_eal/common/eal_common_dev.c
> index cd071442f..1f6df2351 100644
> --- a/lib/librte_eal/common/eal_common_dev.c
> +++ b/lib/librte_eal/common/eal_common_dev.c
> @@ -10,9 +10,12 @@
>  
>  #include <rte_compat.h>
>  #include <rte_bus.h>
> +#include <rte_class.h>
>  #include <rte_dev.h>
>  #include <rte_devargs.h>
>  #include <rte_debug.h>
> +#include <rte_errno.h>
> +#include <rte_kvargs.h>
>  #include <rte_log.h>
>  
>  #include "eal_private.h"
> @@ -207,3 +210,147 @@ rte_eal_hotplug_remove(const char *busname, const char 
> *devname)
>       rte_eal_devargs_remove(busname, devname);
>       return ret;
>  }
> +
> +static size_t
> +dev_layer_count(const char *s)
> +{
> +     size_t i = s ? 1 : 0;
> +
> +     while (s != NULL && s[0] != '\0') {
> +             i += s[0] == '/';
> +             s++;
> +     }
> +     return i;
> +}
> +
So the above code really just counts the number characters in the string,
omitting the delimiter character '/', right?  If thats all you want to do, you 
can just
use strtok and strnlen for that, cant you?

Otherwise, this looks pretty good to me
Neil

Reply via email to