Some ioctls APIs (drm, omapfb, and hsi_char) have an intermediate define
for their definitions. ioctlent.sh is now able to find them correctly.

* linux/ioctlent.sh: Add decoding support for drm, omapfb and hsi_char ioctls

Signed-off-by: Gabriel Laskar <[email protected]>
---
It should be possible to have only on set of regex for all the apis, but the
code seemed simpler like this.

 linux/ioctlent.sh | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/linux/ioctlent.sh b/linux/ioctlent.sh
index e283069..3c7d3fc 100755
--- a/linux/ioctlent.sh
+++ b/linux/ioctlent.sh
@@ -94,6 +94,21 @@ 
regexp='^[[:space:]]*#[[:space:]]*define[[:space:]]\+[A-Z][A-Z0-9_]*[[:space:]]\
        -e 
's/^\(.*\):[[:space:]]*#[[:space:]]*define[[:space:]]*\([A-Z0-9_]*\)[[:space:]]*_S\?I.*(\([^[,]*\)[[:space:]]*,[[:space:]]*\([^,)]*\).*/
     { "\1", "\2",   _IOC(_IOC_NONE,\3,\4,0) },/p' \
        >> ioctls.h
 
+lookup_named_ioctls() {
+       api_name=$1
+
+       
regexp='^[[:space:]]*#[[:space:]]*define[[:space:]]\+[A-Z][A-Z0-9_]*\(([a-z,]*)\)\?[[:space:]]\+'$api_name'_\(IOR\|IOW\|IO\|IOWR\)[[:space:]]*'
+       (cd $dir && grep $regexp $files 2>/dev/null) | \
+               sed -n \
+               -e "s,$asm/,asm/,g" \
+               -e 
's/^\(.*\):[[:space:]]*#[[:space:]]*define[[:space:]]*\([A-Z0-9_]*\)[[:space:]]*'$api_name'_IO.*(\([^[,]*\)[[:space:]]*,.*/
  { "\1", "\2",   _IOC(_IOC_NONE,DRM_IOCTL_BASE,\3,0)     },/p' \
+               >> ioctls.h
+}
+
+lookup_named_ioctls DRM
+lookup_named_ioctls OMAP
+lookup_named_ioctls HSC
+
 # Strip uapi/ prefix
 sed -i 's|"uapi/|"|' ioctls.h
 
@@ -105,10 +120,12 @@ sort -u -o ioctls.h ioctls.h
 # Collect potential ioctl names. ('bases' is a bad name. Sigh)
 # 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 \
+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' \
-       ioctls.h | sort -u)
+       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'
 \
+       ioctls.h) | sort -u)
 
 for base in $bases; do
        echo "Looking for $base"
-- 
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