From: Mike F. <va...@ge...> - 2009-02-20 17:56:57
|
Rather than hard coding the subdirs to search for ioctls, discover them dynamically with newer kernel trees by working off of the exported header mechanism. If the kernel does not have this mechanism, we fall back to the old method of hard coding the list. This fixes issues where the current hard coded list does not contain all headers which get exported to userspace (like the mtd ioctls). Signed-off-by: Mike Frysinger <va...@ge...> --- linux/ioctlent.sh | 14 +++++++++++++- 1 files changed, 13 insertions(+), 1 deletions(-) diff --git a/linux/ioctlent.sh b/linux/ioctlent.sh index cff6145..479eed4 100644 --- a/linux/ioctlent.sh +++ b/linux/ioctlent.sh @@ -68,7 +68,19 @@ lookup_ioctls '7[12]' linux/videotext.h lookup_ioctls 89 $asm/sockios.h linux/sockios.h lookup_ioctls 8B linux/wireless.h -files="linux/* $asm/* scsi/* sound/*" +if [ -e $dir/Kbuild ] ; then + # kernel has exported user space headers, so query only them + files=$( + cd $dir + find . -mindepth 2 -name Kbuild | \ + sed -e 's:^\./::' -e 's:/Kbuild:/*:' | \ + grep -v '^asm-' + echo "$asm/* asm-generic/*" + ) +else + # older kernel so just assume some headers + files="linux/* $asm/* scsi/* sound/*" +fi # Build the list of all ioctls regexp='^[[:space:]]*#[[:space:]]*define[[:space:]]\+[A-Z][A-Z0-9_]*[[:space:]]\+_S\?\(IO\|IOW\|IOR\|IOWR\)\>' -- 1.6.1.3 |