[PATCH 1/2] devtools/linux-uapi: conform to kernel headers install
    Stephen Hemminger 
    stephen at networkplumber.org
       
    Tue Jun 10 17:11:20 CEST 2025
    
    
  
The Linux kernel has an existing script to sanitize headers which
uses more steps to clean up the header file. Make the DPDK header
import script use the same regular expression. The kernel script
is GPL-2.0 so ok.
Not necessary for current vduse.h header only but useful if more
headers are added later. Want the distro and DPDK header to
be exact match.
Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
---
 devtools/linux-uapi.sh | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/devtools/linux-uapi.sh b/devtools/linux-uapi.sh
index ccd8b6816e..e739bdb1f4 100755
--- a/devtools/linux-uapi.sh
+++ b/devtools/linux-uapi.sh
@@ -79,9 +79,21 @@ import_header()
 fixup_includes()
 {
 	local path=$1
+	local tmpfile=$path.tmp
 
-	sed -i "s|^#include <linux/compiler.h>||g" $path
-	sed -i "s|\<__user[[:space:]]||" $path
+	# script to sanitize see kernel script
+	# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/scripts/headers_install.sh
+
+	sed -E -e '
+	     s/([[:space:](])(__user|__force|__iomem)[[:space:]]/\1/g
+	     s/__attribute_const__([[:space:]]|$)/\1/g
+	     s@^#include <linux/compiler(|_types).h>@@
+	     s/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\1__attribute__((packed))\2/g
+	     s/(^|[[:space:](])(inline|asm|volatile)([[:space:](]|$)/\1__\2__\3/g
+	    s@#(ifndef|define|endif[[:space:]]*/[*])[[:space:]]*_UAPI@#\1 @' $path >$tmpfile
+
+	unifdef -U__KERNEL__ -D__EXPORTED_HEADERS $tmpfile >$path
+	rm $tmpfile
 
 	# Prepend include path with "uapi/" if the header is imported
 	for include in $(sed -ne 's/^#include <\(.*\)>$/\1/p' $path); do
-- 
2.47.2
    
    
More information about the dev
mailing list