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

Reply via email to