2
0
mirror of https://github.com/openvswitch/ovs synced 2025-09-02 23:35:27 +00:00

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>
This commit is contained in:
Ben Pfaff
2017-05-05 18:18:09 -04:00
parent 49e04890ad
commit 6973b40a43
2 changed files with 40 additions and 0 deletions

View File

@@ -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 */