File tree Expand file tree Collapse file tree 3 files changed +86
-0
lines changed
tools/testing/selftests/ftrace/test.d Expand file tree Collapse file tree 3 files changed +86
-0
lines changed Original file line number Diff line number Diff line change
1
+ #! /bin/sh
2
+ # SPDX-License-Identifier: GPL-2.0
3
+ # description: Generic dynamic event - add/remove probes with BTF arguments
4
+ # requires: dynamic_events "<argname>":README
5
+
6
+ KPROBES=
7
+ FPROBES=
8
+
9
+ if grep -qF " p[:[<group>/][<event>]] <place> [<args>]" README ; then
10
+ KPROBES=yes
11
+ fi
12
+ if grep -qF " f[:[<group>/][<event>]] <func-name>[%return] [<args>]" README ; then
13
+ FPROBES=yes
14
+ fi
15
+
16
+ if [ -z " $KPROBES " -a " $FPROBES " ] ; then
17
+ exit_unsupported
18
+ fi
19
+
20
+ echo 0 > events/enable
21
+ echo > dynamic_events
22
+
23
+ TP=kfree
24
+
25
+ if [ " $FPROBES " ] ; then
26
+ echo " f:fpevent $TP object" >> dynamic_events
27
+ echo " t:tpevent $TP ptr" >> dynamic_events
28
+
29
+ grep -q " fpevent.*object=object" dynamic_events
30
+ grep -q " tpevent.*ptr=ptr" dynamic_events
31
+
32
+ echo > dynamic_events
33
+
34
+ echo " f:fpevent $TP " ' $arg1' >> dynamic_events
35
+ grep -q " fpevent.*object=object" dynamic_events
36
+ echo > dynamic_events
37
+
38
+ echo " f:fpevent $TP " ' $arg*' >> dynamic_events
39
+ echo " t:tpevent $TP " ' $arg*' >> dynamic_events
40
+
41
+ grep -q " fpevent.*object=object" dynamic_events
42
+ grep -q " tpevent.*ptr=ptr" dynamic_events
43
+ ! grep -q " tpevent.*_data" dynamic_events
44
+ fi
45
+
46
+ echo > dynamic_events
47
+
48
+ if [ " $KPROBES " ] ; then
49
+ echo " p:kpevent $TP object" >> dynamic_events
50
+ grep -q " kpevent.*object=object" dynamic_events
51
+
52
+ echo > dynamic_events
53
+
54
+ echo " p:kpevent $TP " ' $arg*' >> dynamic_events
55
+ grep -q " kpevent.*object=object" dynamic_events
56
+ fi
57
+
58
+ clear_trace
Original file line number Diff line number Diff line change 94
94
# %return suffix errors
95
95
check_error ' f vfs_read^%hoge' # BAD_ADDR_SUFFIX
96
96
97
+ # BTF arguments errors
98
+ if grep -q " <argname>" README; then
99
+ check_error ' f vfs_read args=^$arg*' # BAD_VAR_ARGS
100
+ check_error ' f vfs_read +0(^$arg*)' # BAD_VAR_ARGS
101
+ check_error ' f vfs_read $arg* ^$arg*' # DOUBLE_ARGS
102
+ check_error ' f vfs_read%return ^$arg*' # NOFENTRY_ARGS
103
+ check_error ' f vfs_read ^hoge' # NO_BTFARG
104
+ check_error ' f kfree ^$arg10' # NO_BTFARG (exceed the number of parameters)
105
+ check_error ' f kfree%return ^$retval' # NO_RETVAL
106
+ else
107
+ check_error ' f vfs_read ^$arg*' # NOSUP_BTFARG
108
+ check_error ' t kfree ^$arg*' # NOSUP_BTFARG
109
+ fi
110
+
97
111
exit 0
Original file line number Diff line number Diff line change @@ -103,4 +103,18 @@ check_error 'p vfs_read^%hoge' # BAD_ADDR_SUFFIX
103
103
check_error ' p ^vfs_read+10%return' # BAD_RETPROBE
104
104
fi
105
105
106
+ # BTF arguments errors
107
+ if grep -q " <argname>" README; then
108
+ check_error ' p vfs_read args=^$arg*' # BAD_VAR_ARGS
109
+ check_error ' p vfs_read +0(^$arg*)' # BAD_VAR_ARGS
110
+ check_error ' p vfs_read $arg* ^$arg*' # DOUBLE_ARGS
111
+ check_error ' r vfs_read ^$arg*' # NOFENTRY_ARGS
112
+ check_error ' p vfs_read+8 ^$arg*' # NOFENTRY_ARGS
113
+ check_error ' p vfs_read ^hoge' # NO_BTFARG
114
+ check_error ' p kfree ^$arg10' # NO_BTFARG (exceed the number of parameters)
115
+ check_error ' r kfree ^$retval' # NO_RETVAL
116
+ else
117
+ check_error ' p vfs_read ^$arg*' # NOSUP_BTFARG
118
+ fi
119
+
106
120
exit 0
You can’t perform that action at this time.
0 commit comments