Go to file
David Marchand 18218713bf enforce experimental tag at beginning of declarations
Putting a '__attribute__((deprecated))' in the middle of a function
prototype does not result in the expected result with gcc (while clang
is fine with this syntax).

$ cat deprecated.c
void * __attribute__((deprecated)) incorrect() { return 0; }
__attribute__((deprecated)) void *correct(void) { return 0; }
int main(int argc, char *argv[]) { incorrect(); correct(); return 0; }
$ gcc -o deprecated.o -c deprecated.c
deprecated.c: In function ‘main’:
deprecated.c:3:1: warning: ‘correct’ is deprecated (declared at
deprecated.c:2) [-Wdeprecated-declarations]
 int main(int argc, char *argv[]) { incorrect(); correct(); return 0; }
 ^

Move the tag on a separate line and make it the first thing of function
prototypes.
This is not perfect but we will trust reviewers to catch the other not
so easy to detect patterns.

sed -i \
     -e '/^\([^#].*\)\?__rte_experimental */{' \
     -e 's//\1/; s/ *$//; i\' \
     -e __rte_experimental \
     -e '/^$/d}' \
     $(git grep -l __rte_experimental -- '*.h')

Special mention for rte_mbuf_data_addr_default():

There is either a bug or a (not yet understood) issue with gcc.
gcc won't drop this inline when unused and rte_mbuf_data_addr_default()
calls rte_mbuf_buf_addr() which itself is experimental.
This results in a build warning when not accepting experimental apis
from sources just including rte_mbuf.h.

For this specific case, we hide the call to rte_mbuf_buf_addr() under
the ALLOW_EXPERIMENTAL_API flag.

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Signed-off-by: David Marchand <david.marchand@redhat.com>
2019-06-29 19:04:48 +02:00
.ci ci: fix arm64 config filename 2019-03-30 00:01:35 +01:00
app test/rcu: fix test case 2019-06-29 14:29:52 +02:00
buildtools buildtools: detect discrepancies for experimental symbols 2019-06-29 19:04:32 +02:00
config build: enable BSD features visibility for FreeBSD 2019-06-26 16:50:33 +02:00
devtools enforce experimental tag at beginning of declarations 2019-06-29 19:04:48 +02:00
doc remove experimental tags from all symbol definitions 2019-06-29 19:04:43 +02:00
drivers enforce experimental tag at beginning of declarations 2019-06-29 19:04:48 +02:00
examples examples/l3fwd-power: fix build with gcc 4 2019-06-29 14:29:49 +02:00
kernel kernel/linux: fix modules install path 2019-06-27 17:43:59 +02:00
lib enforce experimental tag at beginning of declarations 2019-06-29 19:04:48 +02:00
license fix dpdk.org URLs 2018-11-26 20:19:24 +01:00
mk build: enable BSD features visibility for FreeBSD 2019-06-26 16:50:33 +02:00
usertools telemetry: support global metrics 2019-06-24 16:51:28 +02:00
.gitattributes improve git diff 2016-11-13 15:25:12 +01:00
.gitignore doc: fix missing asymmetric crypto table 2019-04-18 16:01:28 +02:00
.travis.yml ci: add a distinguisher to the extra Travis builds 2019-04-17 13:56:23 +02:00
GNUmakefile test: move to app directory 2019-02-26 15:29:27 +01:00
MAINTAINERS buildtools: detect discrepancies for experimental symbols 2019-06-29 19:04:32 +02:00
Makefile license: use SPDX tag in root makefile 2018-01-04 22:41:38 +01:00
meson_options.txt kernel/linux: fix modules install path 2019-06-27 17:43:59 +02:00
meson.build build: enable BSD features visibility for FreeBSD 2019-06-26 16:50:33 +02:00
README license: introduce SPDX identifiers 2018-01-04 22:41:38 +01:00
VERSION version: 19.08-rc0 2019-05-14 22:58:22 +02:00

DPDK is a set of libraries and drivers for fast packet processing.
It supports many processor architectures and both FreeBSD and Linux.

The DPDK uses the Open Source BSD-3-Clause license for the core libraries
and drivers. The kernel components are GPL-2.0 licensed.

Please check the doc directory for release notes,
API documentation, and sample application information.

For questions and usage discussions, subscribe to: users@dpdk.org
Report bugs and issues to the development mailing list: dev@dpdk.org