summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorBen Pfaff <blp@ovn.org>2017-05-05 18:18:09 -0400
committerBen Pfaff <blp@ovn.org>2017-05-07 08:58:06 -0400
commit6973b40a43c6f5e279dbcfee0ac00a96933f7a7d (patch)
treeef5dd6dc0b036678ca9cdba013382a1e2b1111d6 /include
parent49e04890ad2fb4863f3dcd9c82eedf7360fe83e3 (diff)
downloadopenvswitch-6973b40a43c6f5e279dbcfee0ac00a96933f7a7d.tar.gz
sparse: Add rte_memcpy.h replacement header.
Without this replacement header, building netdev-dpdk.c provokes several "sparse" warnings on i386: /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@ovn.org> Acked-by: Darrell Ball <dlu998@gmail.com>
Diffstat (limited to 'include')
-rw-r--r--include/sparse/automake.mk1
-rw-r--r--include/sparse/rte_memcpy.h39
2 files changed, 40 insertions, 0 deletions
diff --git a/include/sparse/automake.mk b/include/sparse/automake.mk
index 0456ee67d..f3282c260 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 000000000..5cd3f013e
--- /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:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 */