From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr0-f195.google.com (mail-wr0-f195.google.com [209.85.128.195]) by dpdk.org (Postfix) with ESMTP id 08F547CE1 for ; Tue, 27 Mar 2018 22:23:35 +0200 (CEST) Received: by mail-wr0-f195.google.com with SMTP id p53so154436wrc.10 for ; Tue, 27 Mar 2018 13:23:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=aD3sOHVb+rX99DKAXhChcOS61ZXlsPL/WW0/33j2qHI=; b=QZARz/IFvY/hz2zFt1efwVnDovjzSmMIZ9x8AoUor318LmC4Zu9dpnWVqCUoanl1aY j8OaN/N+DRiJUffMfYufok8VxG7QwnJq/hy10IaYgYinD8q6UVypWqNF4j/agUzPGWrI 30bPWjgIY5O0MHAhLiRIYlNN7CB9PQsYIU+wTG2tl0Rx7nBK+klcg6nWWhg0CxHP8t8i oPJiuhRZnTwUkK8Wu09ibuHHg8d9Q/ie87ZOZNvCxsZ2gY4irKTg2421xDBdHIZjqM6g dMk4uah7x4oJvaPSHOjKt+lCQjZm91mEZI1vnzhQtKW76daM/S7QC+MUe4/VfJW3yEDJ FlzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to:user-agent; bh=aD3sOHVb+rX99DKAXhChcOS61ZXlsPL/WW0/33j2qHI=; b=ZwBU3Fqz0SW0K2Rxz4NNrnLqRNeSlNuvT/sCDVVNCzvy3vzX/RGmJQ0ebG4sMBklix ZK6yaHuANfFYxoAVqIdmY2dl8RIwnicniGQLk7MXuR4JKwOocK7OpbKGKdxvEtV3Z56Z onoJzQAhOSoA9log2fP5flVf/O7Lo7Cvx9SiUYjtfAw+82YUe4LulmJGuFuajL5bG16z PwKQCpTp61G+YpOASS+zORzCo/T3f2vB1mkOfRuOshkUqBHD6VGDeyaX77oqX9Pmkbm9 ksgqmQ3ZGJp8BIVkaNaa72lkOYHsCHwQhtmAUWtv5k5PPCSh6kFNb721zhN2MA1D2ZBh o2Yw== X-Gm-Message-State: AElRT7H+TsS6frWZmDlOQMrVsp15aVOyYlcB18ktEBPE16nPMHcZarG1 PEdwlFJ4vlDykzHDsy0e194YEc95 X-Google-Smtp-Source: AIpwx4/oqF9cvOzatEL8MQ6ACPk3aRryPCkWerU3Y+UrpuS0aPBN4X4X/unjBNSsh70TyXf8SLdK7A== X-Received: by 10.223.159.79 with SMTP id f15mr649116wrg.115.1522182215530; Tue, 27 Mar 2018 13:23:35 -0700 (PDT) Received: from bidouze.vm.6wind.com (host.78.145.23.62.rev.coltfrance.com. [62.23.145.78]) by smtp.gmail.com with ESMTPSA id h197sm2464948wmd.3.2018.03.27.13.23.34 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 27 Mar 2018 13:23:34 -0700 (PDT) Date: Tue, 27 Mar 2018 22:23:21 +0200 From: =?iso-8859-1?Q?Ga=EBtan?= Rivet To: Neil Horman Cc: dev@dpdk.org, "Wiles, Keith" Message-ID: <20180327202321.bapd64u6ftqyke5q@bidouze.vm.6wind.com> References: <20180327114750.GA30585@hmswarspite.think-freely.org> <20180327124000.6n63hpng53tm3bil@bidouze.vm.6wind.com> <20180327130413.s2waw6udjfehu77t@bidouze.vm.6wind.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20180327130413.s2waw6udjfehu77t@bidouze.vm.6wind.com> User-Agent: NeoMutt/20170113 (1.7.2) Subject: Re: [dpdk-dev] [PATCH v3 10/20] eal/dev: implement device iteration initialization X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Mar 2018 20:23:36 -0000 On Tue, Mar 27, 2018 at 03:04:13PM +0200, Gaëtan Rivet wrote: > On Tue, Mar 27, 2018 at 02:40:00PM +0200, Gaëtan Rivet wrote: > > On Tue, Mar 27, 2018 at 07:47:50AM -0400, Neil Horman wrote: > > > 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? > > > > Will do. > > > > Answered too quickly. > No, this function only counts the number of occurences of '/' in the > text. > > strtok could be used however in the main function. > Will see for a simpler implementation using it. > After a few tries, I see no benefit in using strtok. The original const text must still be tokenized, strtok would modify it. Duplicating would force finding the references in the original text, which would make the code as complex as it is now. > > > > > > Otherwise, this looks pretty good to me > > > > Please look into the librte_kvargs compatibility patch as well (quite > > short). I'm very unhappy about the logging hack. > > There is always the solution of setting a function pointer on rte_log > > with the proper loglevels and so on. > > Ideally rte_log could be made independent (starting skimming EAL from > > all the fat), but this is much less trivial. > > > > This implementation relies on librte_kvargs being available. If this is > > not the case, there isn't much point to it. > > > > -- > > Gaëtan Rivet > > 6WIND > > -- > Gaëtan Rivet > 6WIND -- Gaëtan Rivet 6WIND