DPDK 21.11.0
rte_compat.h
1/* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2015 Neil Horman <nhorman@tuxdriver.com>.
3 * All rights reserved.
4 */
5
6#ifndef _RTE_COMPAT_H_
7#define _RTE_COMPAT_H_
8
9#ifndef ALLOW_EXPERIMENTAL_API
10
11#define __rte_experimental \
12__attribute__((deprecated("Symbol is not yet part of stable ABI"), \
13section(".text.experimental")))
14
15#else
16
17#define __rte_experimental \
18__attribute__((section(".text.experimental")))
19
20#endif
21
22#ifndef __has_attribute
23/* if no has_attribute assume no support for attribute too */
24#define __has_attribute(x) 0
25#endif
26
27#if !defined ALLOW_INTERNAL_API && __has_attribute(error) /* For GCC */
28
29#define __rte_internal \
30__attribute__((error("Symbol is not public ABI"), \
31section(".text.internal")))
32
33#elif !defined ALLOW_INTERNAL_API && __has_attribute(diagnose_if) /* For clang */
34
35#define __rte_internal \
36__attribute__((diagnose_if(1, "Symbol is not public ABI", "error"), \
37section(".text.internal")))
38
39#else
40
41#define __rte_internal \
42__attribute__((section(".text.internal")))
43
44#endif
45
46#endif /* _RTE_COMPAT_H_ */