From mboxrd@z Thu Jan 1 00:00:00 1970 From: Neil Horman Subject: Re: [PATCH v3 10/20] eal/dev: implement device iteration initialization Date: Tue, 27 Mar 2018 07:47:50 -0400 Message-ID: <20180327114750.GA30585@hmswarspite.think-freely.org> References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: dev@dpdk.org, "Wiles, Keith" To: Gaetan Rivet Return-path: Received: from smtp.tuxdriver.com (charlotte.tuxdriver.com [70.61.120.58]) by dpdk.org (Postfix) with ESMTP id 8397C2C12 for ; Tue, 27 Mar 2018 13:52:48 +0200 (CEST) Content-Disposition: inline In-Reply-To: List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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 > Cc: "Wiles, Keith" > Signed-off-by: Gaetan Rivet > --- > > 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 > #include > +#include > #include > #include > #include > +#include > +#include > #include > > #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