Skip to content

Commit d892d3d

Browse files
committed
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>
1 parent 08c9306 commit d892d3d

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

tools/testing/selftests/ftrace/test.d/dynevent/add_remove_btfarg.tc

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,17 @@
55

66
KPROBES=
77
FPROBES=
8+
FIELDS=
89

910
if grep -qF "p[:[<group>/][<event>]] <place> [<args>]" README ; then
1011
KPROBES=yes
1112
fi
1213
if grep -qF "f[:[<group>/][<event>]] <func-name>[%return] [<args>]" README ; then
1314
FPROBES=yes
1415
fi
16+
if grep -qF "<argname>[->field[->field|.field...]]" README ; then
17+
FIELDS=yes
18+
fi
1519

1620
if [ -z "$KPROBES" -a -z "$FPROBES" ] ; then
1721
exit_unsupported
@@ -21,6 +25,9 @@ echo 0 > events/enable
2125
echo > dynamic_events
2226

2327
TP=kfree
28+
TP2=kmem_cache_alloc
29+
TP3=getname_flags
30+
TP4=sched_wakeup
2431

2532
if [ "$FPROBES" ] ; then
2633
echo "f:fpevent $TP object" >> dynamic_events
@@ -33,6 +40,7 @@ echo > dynamic_events
3340

3441
echo "f:fpevent $TP "'$arg1' >> dynamic_events
3542
grep -q "fpevent.*object=object" dynamic_events
43+
3644
echo > dynamic_events
3745

3846
echo "f:fpevent $TP "'$arg*' >> dynamic_events
@@ -45,6 +53,18 @@ fi
4553

4654
echo > dynamic_events
4755

56+
if [ "$FIELDS" ] ; then
57+
echo "t:tpevent ${TP2} obj_size=s->object_size" >> dynamic_events
58+
echo "f:fpevent ${TP3}%return path=\$retval->name:string" >> dynamic_events
59+
echo "t:tpevent2 ${TP4} p->se.group_node.next->prev" >> dynamic_events
60+
61+
grep -q "tpevent .*obj_size=s->object_size" dynamic_events
62+
grep -q "fpevent.*path=\$retval->name:string" dynamic_events
63+
grep -q 'tpevent2 .*p->se.group_node.next->prev' dynamic_events
64+
65+
echo > dynamic_events
66+
fi
67+
4868
if [ "$KPROBES" ] ; then
4969
echo "p:kpevent $TP object" >> dynamic_events
5070
grep -q "kpevent.*object=object" dynamic_events

tools/testing/selftests/ftrace/test.d/dynevent/fprobe_syntax_errors.tc

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,14 @@ check_error 'f vfs_read%return ^$arg*' # NOFENTRY_ARGS
103103
check_error 'f vfs_read ^hoge' # NO_BTFARG
104104
check_error 'f kfree ^$arg10' # NO_BTFARG (exceed the number of parameters)
105105
check_error 'f kfree%return ^$retval' # NO_RETVAL
106+
107+
if grep -qF "<argname>[->field[->field|.field...]]" README ; then
108+
check_error 'f vfs_read%return $retval->^foo' # NO_PTR_STRCT
109+
check_error 'f vfs_read file->^foo' # NO_BTF_FIELD
110+
check_error 'f vfs_read file^-.foo' # BAD_HYPHEN
111+
check_error 'f vfs_read ^file:string' # BAD_TYPE4STR
112+
fi
113+
106114
else
107115
check_error 'f vfs_read ^$arg*' # NOSUP_BTFARG
108116
check_error 't kfree ^$arg*' # NOSUP_BTFARG

0 commit comments

Comments
 (0)