eal: add internal ABI tag definition

Introduce the __rte_internal tag to mark internal ABI function which is
used only by the drivers or other libraries.
Like for __rte_experimental, this tag must be on a separate line before
function proprotypes.

Signed-off-by: Haiyue Wang <haiyue.wang@intel.com>
This commit is contained in:
Haiyue Wang 2020-04-25 18:56:15 +08:00 committed by David Marchand
parent 06d63eb5e4
commit fba5af82ad
2 changed files with 52 additions and 0 deletions

View File

@ -111,6 +111,37 @@ check_experimental_tags() { # <patch>
return $res return $res
} }
check_internal_tags() { # <patch>
res=0
cat "$1" |awk '
BEGIN {
current_file = "";
ret = 0;
}
/^+++ b\// {
current_file = $2;
}
/^+.*__rte_internal/ {
if (current_file ~ ".c$" ) {
print "Please only put __rte_internal tags in " \
"headers ("current_file")";
ret = 1;
}
if ($1 != "+__rte_internal" || $2 != "") {
print "__rte_internal must appear alone on the line" \
" immediately preceding the return type of" \
" a function."
ret = 1;
}
}
END {
exit ret;
}' || res=1
return $res
}
number=0 number=0
range='origin/master..' range='origin/master..'
quiet=false quiet=false
@ -194,6 +225,14 @@ check () { # <patch> <commit> <title>
ret=1 ret=1
fi fi
! $verbose || printf '\nChecking __rte_internal tags:\n'
report=$(check_internal_tags "$tmpinput")
if [ $? -ne 0 ] ; then
$headline_printed || print_headline "$3"
printf '%s\n' "$report"
ret=1
fi
if [ "$tmpinput" != "$1" ]; then if [ "$tmpinput" != "$1" ]; then
rm -f "$tmpinput" rm -f "$tmpinput"
trap - INT trap - INT

View File

@ -19,4 +19,17 @@ __attribute__((section(".text.experimental")))
#endif #endif
#ifndef ALLOW_INTERNAL_API
#define __rte_internal \
__attribute__((error("Symbol is not public ABI"), \
section(".text.internal")))
#else
#define __rte_internal \
__attribute__((section(".text.internal")))
#endif
#endif /* _RTE_COMPAT_H_ */ #endif /* _RTE_COMPAT_H_ */