[ovs-dev] [PATCH 1/2] sparse: Add rte_memcpy.h replacement header.
Ben Pfaff
blp at ovn.org
Mon May 8 13:48:12 UTC 2017
Darrell, do you plan to review patch 2?
On Sun, May 07, 2017 at 08:58:35AM -0400, Ben Pfaff wrote:
> OK, I added that it affects i386 and applied this to master. Thank you!
>
> On Sat, May 06, 2017 at 08:27:47PM +0000, Darrell Ball wrote:
> > I am not able to reproduce this using 64bit arch., although Sparse does work for me.
> > (I guess I should install a 32 bit VM at some point, but I am low on disk space - too many 64bit VMs)
> > I tried tip of master and about 2 months old master
> >
> > Based on the above data point and the error output below, it seems like this noise only afflicts 32 bit arch
> > Maybe specify in the commit message that this helps on 32 bit arch, unless others can see this or
> > something similar on 64bit.
> >
> > Acked-by: Darrell Ball <dlu998 at gmail.com>
> >
> >
> >
> > On 5/5/17, 9:39 PM, "ovs-dev-bounces at openvswitch.org on behalf of Ben Pfaff" <ovs-dev-bounces at openvswitch.org on behalf of blp at ovn.org> wrote:
> >
> > Without this replacement header, building netdev-dpdk.c provokes several
> > "sparse" warnings:
> >
> > /usr/include/dpdk/rte_memcpy.h:515:33: warning: incorrect type in argument 1 (different type sizes)
> > /usr/include/dpdk/rte_memcpy.h:515:33: expected long long const [usertype] *__P
> > /usr/include/dpdk/rte_memcpy.h:515:33: got int const [usertype] *<noident>
> > /usr/lib/gcc/i686-linux-gnu/6//include/emmintrin.h:698:20: error: undefined identifier '__builtin_ia32_loaddqu'
> > /usr/lib/gcc/i686-linux-gnu/6//include/emmintrin.h:698:11: error: cast from unknown type
> > /usr/lib/gcc/i686-linux-gnu/6//include/emmintrin.h:716:3: error: undefined identifier '__builtin_ia32_storedqu'
> > /usr/lib/gcc/i686-linux-gnu/6//include/emmintrin.h:698:43: error: not a function <noident>
> > /usr/lib/gcc/i686-linux-gnu/6//include/emmintrin.h:716:27: error: not a function <noident>
> > ...
> >
> > Signed-off-by: Ben Pfaff <blp at ovn.org>
> > ---
> > include/sparse/automake.mk | 1 +
> > include/sparse/rte_memcpy.h | 39 +++++++++++++++++++++++++++++++++++++++
> > 2 files changed, 40 insertions(+)
> > create mode 100644 include/sparse/rte_memcpy.h
> >
> > diff --git a/include/sparse/automake.mk b/include/sparse/automake.mk
> > index 0456ee67d481..f3282c260414 100644
> > --- a/include/sparse/automake.mk
> > +++ b/include/sparse/automake.mk
> > @@ -10,6 +10,7 @@ noinst_HEADERS += \
> > include/sparse/pthread.h \
> > include/sparse/rte_atomic.h \
> > include/sparse/rte_lcore.h \
> > + include/sparse/rte_memcpy.h \
> > include/sparse/rte_vect.h \
> > include/sparse/sys/socket.h \
> > include/sparse/sys/wait.h
> > diff --git a/include/sparse/rte_memcpy.h b/include/sparse/rte_memcpy.h
> > new file mode 100644
> > index 000000000000..5cd3f013ea8b
> > --- /dev/null
> > +++ b/include/sparse/rte_memcpy.h
> > @@ -0,0 +1,39 @@
> > +/* Copyright (c) 2017 Nicira, Inc.
> > + *
> > + * Licensed under the Apache License, Version 2.0 (the "License");
> > + * you may not use this file except in compliance with the License.
> > + * You may obtain a copy of the License at:
> > + *
> > + * https://urldefense.proofpoint.com/v2/url?u=http-3A__www.apache.org_licenses_LICENSE-2D2.0&d=DwICAg&c=uilaK90D4TOVoH58JNXRgQ&r=BVhFA09CGX7JQ5Ih-uZnsw&m=Qv-3YRHpSQuMTnL-vRyqF0jCaFIpiuYqPGtkgPYEwxA&s=AzghyY07JReCfJwWQShu12qMFGiOML9IpKTIdvsOTu0&e=
> > + *
> > + * Unless required by applicable law or agreed to in writing, software
> > + * distributed under the License is distributed on an "AS IS" BASIS,
> > + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> > + * See the License for the specific language governing permissions and
> > + * limitations under the License.
> > + */
> > +
> > +#ifndef RTE_MEMCPY_H
> > +#define RTE_MEMCPY_H 1
> > +
> > +#ifndef __CHECKER__
> > +#error "Use this header only with sparse. It is not a correct implementation."
> > +#endif
> > +
> > +/* Include the same headers as the real rte_memcpy(). */
> > +#include <stdio.h>
> > +#include <stdint.h>
> > +#include <string.h>
> > +#include <rte_vect.h>
> > +
> > +/* Declare the same functions as the real rte_memcpy.h, without defining them.
> > + * This gives sparse the information it needs without provoking sparse's
> > + * complaints about the implementations. */
> > +void rte_mov16(uint8_t *, const uint8_t *);
> > +void rte_mov32(uint8_t *, const uint8_t *);
> > +void rte_mov64(uint8_t *, const uint8_t *);
> > +void rte_mov128(uint8_t *, const uint8_t *);
> > +void rte_mov256(uint8_t *, const uint8_t *);
> > +void *rte_memcpy(void *, const void *, size_t);
> > +
> > +#endif /* RTE_MEMCPY_H_WRAPPER */
> > --
> > 2.10.2
> >
> > _______________________________________________
> > dev mailing list
> > dev at openvswitch.org
> > https://urldefense.proofpoint.com/v2/url?u=https-3A__mail.openvswitch.org_mailman_listinfo_ovs-2Ddev&d=DwICAg&c=uilaK90D4TOVoH58JNXRgQ&r=BVhFA09CGX7JQ5Ih-uZnsw&m=Qv-3YRHpSQuMTnL-vRyqF0jCaFIpiuYqPGtkgPYEwxA&s=Nij03EBjSF5Amp8_Hg_3XzcIOE0lgMzzhGfJXVAzHhU&e=
> >
> >
More information about the dev
mailing list