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
