devtools: prevent use of legacy atomic API
In order to deprecate the rte_atomic and rte_smp barrier APIs [1], prevent the patches from using these APIs and __sync builtins in new code. Please use __atomic builtins instead of __sync builtins, rte_atomicNN_xxx and rte_smp_[r/w]mb APIs. On x86 the __atomic_thread_fence(__ATOMIC_SEQ_CST) is quite expensive for SMP case. Flag the new code which use __atomic_thread_fence API. Please use rte_thread_fence API instead of __atomic_thread_fence builtins. 1: Refer to the locks-and-atomic-operations section in https://doc.dpdk.org/guides/prog_guide/writing_efficient_code.html Signed-off-by: Phil Yang <phil.yang@arm.com> Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
This commit is contained in:
parent
672a150563
commit
f1602b4a86
@ -77,6 +77,39 @@ check_forbidden_additions() { # <patch>
|
||||
-f $(dirname $(readlink -f $0))/check-forbidden-tokens.awk \
|
||||
"$1" || res=1
|
||||
|
||||
# refrain from new additions of 16/32/64 bits rte_atomicNN_xxx()
|
||||
awk -v FOLDERS="lib drivers app examples" \
|
||||
-v EXPRESSIONS="rte_atomic[0-9][0-9]_.*\\\(" \
|
||||
-v RET_ON_FAIL=1 \
|
||||
-v MESSAGE='Using rte_atomicNN_xxx' \
|
||||
-f $(dirname $(readlink -f $0))/check-forbidden-tokens.awk \
|
||||
"$1" || res=1
|
||||
|
||||
# refrain from new additions of rte_smp_[r/w]mb()
|
||||
awk -v FOLDERS="lib drivers app examples" \
|
||||
-v EXPRESSIONS="rte_smp_(r|w)?mb\\\(" \
|
||||
-v RET_ON_FAIL=1 \
|
||||
-v MESSAGE='Using rte_smp_[r/w]mb' \
|
||||
-f $(dirname $(readlink -f $0))/check-forbidden-tokens.awk \
|
||||
"$1" || res=1
|
||||
|
||||
# refrain from using compiler __sync_xxx builtins
|
||||
awk -v FOLDERS="lib drivers app examples" \
|
||||
-v EXPRESSIONS="__sync_.*\\\(" \
|
||||
-v RET_ON_FAIL=1 \
|
||||
-v MESSAGE='Using __sync_xxx builtins' \
|
||||
-f $(dirname $(readlink -f $0))/check-forbidden-tokens.awk \
|
||||
"$1" || res=1
|
||||
|
||||
# refrain from using compiler __atomic_thread_fence()
|
||||
# It should be avoided on x86 for SMP case.
|
||||
awk -v FOLDERS="lib drivers app examples" \
|
||||
-v EXPRESSIONS="__atomic_thread_fence\\\(" \
|
||||
-v RET_ON_FAIL=1 \
|
||||
-v MESSAGE='Using __atomic_thread_fence' \
|
||||
-f $(dirname $(readlink -f $0))/check-forbidden-tokens.awk \
|
||||
"$1" || res=1
|
||||
|
||||
# svg figures must be included with wildcard extension
|
||||
# because of png conversion for pdf docs
|
||||
awk -v FOLDERS='doc' \
|
||||
|
Loading…
x
Reference in New Issue
Block a user