selftests/ftrace: Add BTF fields access testcases
Add test cases for accessing the data structure fields using BTF info. This includes the field access from parameters and retval, and accessing string information. Link: https://lore.kernel.org/all/169272161265.160970.14048619786574971276.stgit@devnote2/ Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org> Reviewed-by: Alan Maguire <alan.maguire@oracle.com> Acked-by: Steven Rostedt (Google) <rostedt@goodmis.org>
This commit is contained in:
parent
08c9306fc2
commit
d892d3d3d8
@ -5,6 +5,7 @@
|
||||
|
||||
KPROBES=
|
||||
FPROBES=
|
||||
FIELDS=
|
||||
|
||||
if grep -qF "p[:[<group>/][<event>]] <place> [<args>]" README ; then
|
||||
KPROBES=yes
|
||||
@ -12,6 +13,9 @@ fi
|
||||
if grep -qF "f[:[<group>/][<event>]] <func-name>[%return] [<args>]" README ; then
|
||||
FPROBES=yes
|
||||
fi
|
||||
if grep -qF "<argname>[->field[->field|.field...]]" README ; then
|
||||
FIELDS=yes
|
||||
fi
|
||||
|
||||
if [ -z "$KPROBES" -a -z "$FPROBES" ] ; then
|
||||
exit_unsupported
|
||||
@ -21,6 +25,9 @@ echo 0 > events/enable
|
||||
echo > dynamic_events
|
||||
|
||||
TP=kfree
|
||||
TP2=kmem_cache_alloc
|
||||
TP3=getname_flags
|
||||
TP4=sched_wakeup
|
||||
|
||||
if [ "$FPROBES" ] ; then
|
||||
echo "f:fpevent $TP object" >> dynamic_events
|
||||
@ -33,6 +40,7 @@ echo > dynamic_events
|
||||
|
||||
echo "f:fpevent $TP "'$arg1' >> dynamic_events
|
||||
grep -q "fpevent.*object=object" dynamic_events
|
||||
|
||||
echo > dynamic_events
|
||||
|
||||
echo "f:fpevent $TP "'$arg*' >> dynamic_events
|
||||
@ -45,6 +53,18 @@ fi
|
||||
|
||||
echo > dynamic_events
|
||||
|
||||
if [ "$FIELDS" ] ; then
|
||||
echo "t:tpevent ${TP2} obj_size=s->object_size" >> dynamic_events
|
||||
echo "f:fpevent ${TP3}%return path=\$retval->name:string" >> dynamic_events
|
||||
echo "t:tpevent2 ${TP4} p->se.group_node.next->prev" >> dynamic_events
|
||||
|
||||
grep -q "tpevent .*obj_size=s->object_size" dynamic_events
|
||||
grep -q "fpevent.*path=\$retval->name:string" dynamic_events
|
||||
grep -q 'tpevent2 .*p->se.group_node.next->prev' dynamic_events
|
||||
|
||||
echo > dynamic_events
|
||||
fi
|
||||
|
||||
if [ "$KPROBES" ] ; then
|
||||
echo "p:kpevent $TP object" >> dynamic_events
|
||||
grep -q "kpevent.*object=object" dynamic_events
|
||||
|
@ -103,6 +103,14 @@ check_error 'f vfs_read%return ^$arg*' # NOFENTRY_ARGS
|
||||
check_error 'f vfs_read ^hoge' # NO_BTFARG
|
||||
check_error 'f kfree ^$arg10' # NO_BTFARG (exceed the number of parameters)
|
||||
check_error 'f kfree%return ^$retval' # NO_RETVAL
|
||||
|
||||
if grep -qF "<argname>[->field[->field|.field...]]" README ; then
|
||||
check_error 'f vfs_read%return $retval->^foo' # NO_PTR_STRCT
|
||||
check_error 'f vfs_read file->^foo' # NO_BTF_FIELD
|
||||
check_error 'f vfs_read file^-.foo' # BAD_HYPHEN
|
||||
check_error 'f vfs_read ^file:string' # BAD_TYPE4STR
|
||||
fi
|
||||
|
||||
else
|
||||
check_error 'f vfs_read ^$arg*' # NOSUP_BTFARG
|
||||
check_error 't kfree ^$arg*' # NOSUP_BTFARG
|
||||
|
Loading…
x
Reference in New Issue
Block a user