[dpdk-dev] [PATCH 1/7] member: implement main API

Wang, Yipeng1 yipeng1.wang at intel.com
Thu Aug 24 20:38:11 CEST 2017


> -----Original Message-----
> From: Luca Boccassi [mailto:luca.boccassi at gmail.com]
> Sent: Tuesday, August 22, 2017 3:02 AM
> To: Wang, Yipeng1 <yipeng1.wang at intel.com>
> Cc: dev at 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.wang at 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

> > +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


More information about the dev mailing list