On Thu, 2017-08-24 at 18:38 +0000, Wang, Yipeng1 wrote: > > -----Original Message----- > > From: Luca Boccassi [mailto:luca.bocca...@gmail.com] > > Sent: Tuesday, August 22, 2017 3:02 AM > > To: Wang, Yipeng1 <yipeng1.w...@intel.com> > > Cc: dev@dpdk.org > > Subject: Re: [dpdk-dev] [PATCH 1/7] member: implement main API > > > > On Mon, 2017-08-21 at 17:19 -0700, Yipeng Wang wrote: > > > Membership library is an extension and generalization of a > > > traditional > > > filter (for example Bloom Filter) structure. In general, the > > > Membership > > > library is a data structure that provides a "set-summary" and > > > responds > > > to set-membership queries of whether a certain element belongs to > > > a > > > set(s). A membership test for an element will return the set this > > > element > > > belongs to or not-found if the element is never inserted into the > > > set-summary. > > > > > > The results of the membership test is not 100% accurate. Certain > > > false positive or false negative probability could exist. > > > However, > > > comparing to a "full-blown" complete list of elements, a "set- > > > summary" > > > is memory efficient and fast on lookup. > > > > > > This patch add the main API definition. > > > > > > Signed-off-by: Yipeng Wang <yipeng1.w...@intel.com> > > > --- > > > lib/Makefile | 2 + > > > lib/librte_eal/common/eal_common_log.c | 1 + > > > lib/librte_eal/common/include/rte_log.h | 1 + > > > lib/librte_member/Makefile | 48 +++ > > > lib/librte_member/rte_member.c | 357 > > > +++++++++++++++++++++ > > > lib/librte_member/rte_member.h | 518 > > > +++++++++++++++++++++++++++++++ > > > lib/librte_member/rte_member_version.map | 15 + > > > 7 files changed, 942 insertions(+) > > > create mode 100644 lib/librte_member/Makefile > > > create mode 100644 lib/librte_member/rte_member.c > > > create mode 100644 lib/librte_member/rte_member.h > > > create mode 100644 lib/librte_member/rte_member_version.map > > > > > > diff --git a/lib/librte_member/Makefile > > > b/lib/librte_member/Makefile > > > new file mode 100644 > > > index 0000000..997c825 > > > --- /dev/null > > > +++ b/lib/librte_member/Makefile > > > @@ -0,0 +1,48 @@ > > > +# BSD LICENSE > > > +# > > > +# Copyright(c) 2017 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. > > > + > > > +include $(RTE_SDK)/mk/rte.vars.mk > > > + > > > +# library name > > > +LIB = librte_member.a > > > + > > > +CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3 > > > + > > > > This breaks reproducibility as the output directory will be > > included > > before the source directory, causing a race - please do something > > like: > > > > CFLAGS := -I$(SRCDIR) $(CFLAGS) > > CFLAGS += $(WERROR_FLAGS) -O3 > > > > [Wang, Yipeng] > Thanks Luca, I will reverse the include order in next version. > > I am not an expert on the build system, to be more clear, the race > condition you > mentioned is because the library may search build directory first > that some symlinks > may have not been created yet, right? > > Thanks
Yes, and as a consequence on some builds the DWARF symbols list lib/libfoo/foo.h as the source file path in the .debug, and on some builds they list build-dir/include/foo.h > > > +EXPORT_MAP := rte_member_version.map > > > + > > > +LIBABIVER := 1 > > > + > > > +# all source are stored in SRCS-y > > > +SRCS-$(CONFIG_RTE_LIBRTE_MEMBER) += rte_member.c > > > +# install includes > > > +SYMLINK-$(CONFIG_RTE_LIBRTE_MEMBER)-include := rte_member.h > > > + > > > +include $(RTE_SDK)/mk/rte.lib.mk > > > > -- > > Kind regards, > > Luca Boccassi -- Kind regards, Luca Boccassi