Merge tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm
[platform/kernel/linux-rpi.git] / tools / testing / selftests / ftrace / test.d / dynevent / add_remove_eprobe.tc
1 #!/bin/sh
2 # SPDX-License-Identifier: GPL-2.0
3 # description: Generic dynamic event - add/remove eprobe events
4 # requires: dynamic_events events/syscalls/sys_enter_openat "e[:[<group>/]<event>] <attached-group>.<attached-event> [<args>]":README
5
6 echo 0 > events/enable
7
8 clear_dynamic_events
9
10 SYSTEM="syscalls"
11 EVENT="sys_enter_openat"
12 FIELD="filename"
13 EPROBE="eprobe_open"
14 OPTIONS="file=+0(\$filename):ustring"
15 echo "e:$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events
16
17 grep -q "$EPROBE" dynamic_events
18 test -d events/eprobes/$EPROBE
19
20 echo 1 > events/eprobes/$EPROBE/enable
21 ls
22 echo 0 > events/eprobes/$EPROBE/enable
23
24 content=`grep '^ *ls-' trace | grep 'file='`
25 nocontent=`grep '^ *ls-' trace | grep 'file=' | grep -v -e '"/' -e '"."' -e '(fault)' ` || true
26
27 if [ -z "$content" ]; then
28         exit_fail
29 fi
30
31 if [ ! -z "$nocontent" ]; then
32         exit_fail
33 fi
34
35 echo "-:$EPROBE" >> dynamic_events
36
37 ! grep -q "$EPROBE" dynamic_events
38 ! test -d events/eprobes/$EPROBE
39
40 # test various ways to remove the probe (already tested with just event name)
41
42 # With group name
43 echo "e:$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events
44 grep -q "$EPROBE" dynamic_events
45 test -d events/eprobes/$EPROBE
46 echo "-:eprobes/$EPROBE" >> dynamic_events
47 ! grep -q "$EPROBE" dynamic_events
48 ! test -d events/eprobes/$EPROBE
49
50 # With group name and system/event
51 echo "e:$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events
52 grep -q "$EPROBE" dynamic_events
53 test -d events/eprobes/$EPROBE
54 echo "-:eprobes/$EPROBE $SYSTEM/$EVENT" >> dynamic_events
55 ! grep -q "$EPROBE" dynamic_events
56 ! test -d events/eprobes/$EPROBE
57
58 # With just event name and system/event
59 echo "e:$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events
60 grep -q "$EPROBE" dynamic_events
61 test -d events/eprobes/$EPROBE
62 echo "-:$EPROBE $SYSTEM/$EVENT" >> dynamic_events
63 ! grep -q "$EPROBE" dynamic_events
64 ! test -d events/eprobes/$EPROBE
65
66 # With just event name and system/event and options
67 echo "e:$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events
68 grep -q "$EPROBE" dynamic_events
69 test -d events/eprobes/$EPROBE
70 echo "-:$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events
71 ! grep -q "$EPROBE" dynamic_events
72 ! test -d events/eprobes/$EPROBE
73
74 # With group name and system/event and options
75 echo "e:$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events
76 grep -q "$EPROBE" dynamic_events
77 test -d events/eprobes/$EPROBE
78 echo "-:eprobes/$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events
79 ! grep -q "$EPROBE" dynamic_events
80 ! test -d events/eprobes/$EPROBE
81
82 # Finally make sure what is in the dynamic_events file clears it too
83 echo "e:$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events
84 LINE=`sed -e '/$EPROBE/s/^e/-/' < dynamic_events`
85 test -d events/eprobes/$EPROBE
86 echo "-:eprobes/$EPROBE $SYSTEM/$EVENT $OPTIONS" >> dynamic_events
87 ! grep -q "$EPROBE" dynamic_events
88 ! test -d events/eprobes/$EPROBE
89
90 clear_trace