Android exposes 6 ioctls APIs, but they are placed in drivers/staging/android/uapi/. Moreover, binder ioctls are defined in an enum and with a define.
* linux/ioctlent.h: Add parsing support for android ioctls. Signed-off-by: Gabriel Laskar <[email protected]> --- linux/ioctlent.sh | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/linux/ioctlent.sh b/linux/ioctlent.sh index 3c7d3fc..d780c62 100755 --- a/linux/ioctlent.sh +++ b/linux/ioctlent.sh @@ -77,7 +77,7 @@ if [ -e $dir/Kbuild ]; then echo "$asm/* asm-generic/*" ) # special case: some headers aren't exported directly - files="${files} media/* net/bluetooth/* pcmcia/*" + files="${files} media/* net/bluetooth/* pcmcia/* ../drivers/staging/android/uapi/*" else # older kernel tree or headers_install'ed tree, just assume some headers files="linux/* $asm/* asm-generic/* drm/* mtd/* rdma/* scsi/* sound/* video/* xen/*" @@ -109,6 +109,15 @@ lookup_named_ioctls DRM lookup_named_ioctls OMAP lookup_named_ioctls HSC +# look for ioctls in binder +regexp='^[[:space:]]*[A-Z][A-Za-z0-9_]\+[[:space:]]*=[[:space:]]*_IO' +(cd $dir && grep $regexp $files 2>/dev/null) | \ + sed -n \ + -e "s,$asm/,asm/,g" \ + -e 's/^\(.*\):[[:space:]]*\([A-Z0-9_]*\)[[:space:]]*=[[:space:]]*_I.*(\([^[,]*\)[[:space:]]*,[[:space:]]*\([^,)]*\).*/ { "\1", "\2", _IOC(_IOC_NONE,\3,\4,0) },/p' \ + >> ioctls.h + + # Strip uapi/ prefix sed -i 's|"uapi/|"|' ioctls.h @@ -121,10 +130,10 @@ sort -u -o ioctls.h ioctls.h # Some use a special base to offset their ioctls on. Extract that as well. # Some use 2 defines: _IOC(_IOC_NONE,DM_IOCTL,DM_LIST_DEVICES_CMD,....) bases=$((sed -n \ - -e 's/.*_IOC_NONE.*,[[:space:]]*\([A-Z][A-Za-z0-9_]\+\)[[:space:]]*,[[:space:]]*\([A-Z][A-Za-z0-9_]\+\)[[:space:]+,].*/\1\n\2/p' \ - -e 's/.*_IOC_NONE.*,[[:space:]]*\([A-Z][A-Za-z0-9_]\+\)[[:space:]+,].*/\1/p' \ + -e 's/.*_IOC_NONE.*,[[:space:]]*\([A-Z_][A-Za-z0-9_]\+\)[[:space:]]*,[[:space:]]*\([A-Z][A-Za-z0-9_]\+\)[[:space:]+,].*/\1\n\2/p' \ + -e 's/.*_IOC_NONE.*,[[:space:]]*\([A-Z_][A-Za-z0-9_]\+\)[[:space:]+,].*/\1/p' \ ioctls.h ; \ - sed -n -e 's/.*_IOC_NONE.*,[[:space:]]*[A-Z][A-Za-z0-9_]\+[[:space:]+,]\+[A-Z][A-Za-z0-9_]\+[[:space:]]*+[[:space:]]*\([A-Z][A-Za-z0-9_]*\).*/\1/p' \ + sed -n -e 's/.*_IOC_NONE.*,[[:space:]]*[A-Z_][A-Za-z0-9_]\+[[:space:]+,]\+[A-Z][A-Za-z0-9_]\+[[:space:]]*+[[:space:]]*\([A-Z][A-Za-z0-9_]*\).*/\1/p' \ ioctls.h) | sort -u) for base in $bases; do -- 2.2.2 ------------------------------------------------------------------------------ New Year. New Location. New Benefits. New Data Center in Ashburn, VA. GigeNET is offering a free month of service with a new server in Ashburn. Choose from 2 high performing configs, both with 100TB of bandwidth. Higher redundancy.Lower latency.Increased capacity.Completely compliant. http://p.sf.net/sfu/gigenet _______________________________________________ Strace-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/strace-devel
