Skip to content

Commit ebed962

Browse files
committed
selftests/ftrace: Add test to test new set_event_notrace_pid file
A new file was added to the tracing directory that will allow a user to place a PID into it and the task associated to that PID will not have its events traced. If the event-fork option is enabled, then neither will the children of that task have its events traced. Cc: [email protected] Cc: Shuah Khan <[email protected]> Signed-off-by: Steven Rostedt (VMware) <[email protected]>
1 parent ed8839e commit ebed962

File tree

1 file changed

+125
-0
lines changed

1 file changed

+125
-0
lines changed
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
#!/bin/sh
2+
# SPDX-License-Identifier: GPL-2.0
3+
# description: event tracing - restricts events based on pid notrace filtering
4+
# flags: instance
5+
6+
do_reset() {
7+
echo > set_event
8+
echo > set_event_pid
9+
echo > set_event_notrace_pid
10+
echo 0 > options/event-fork
11+
echo 0 > events/enable
12+
clear_trace
13+
echo 1 > tracing_on
14+
}
15+
16+
fail() { #msg
17+
cat trace
18+
do_reset
19+
echo $1
20+
exit_fail
21+
}
22+
23+
count_pid() {
24+
pid=$@
25+
cat trace | grep -v '^#' | sed -e 's/[^-]*-\([0-9]*\).*/\1/' | grep $pid | wc -l
26+
}
27+
28+
count_no_pid() {
29+
pid=$1
30+
cat trace | grep -v '^#' | sed -e 's/[^-]*-\([0-9]*\).*/\1/' | grep -v $pid | wc -l
31+
}
32+
33+
enable_system() {
34+
system=$1
35+
36+
if [ -d events/$system ]; then
37+
echo 1 > events/$system/enable
38+
fi
39+
}
40+
41+
enable_events() {
42+
echo 0 > tracing_on
43+
# Enable common groups of events, as all events can allow for
44+
# events to be traced via scheduling that we don't care to test.
45+
enable_system syscalls
46+
enable_system rcu
47+
enable_system block
48+
enable_system exceptions
49+
enable_system irq
50+
enable_system net
51+
enable_system power
52+
enable_system signal
53+
enable_system sock
54+
enable_system timer
55+
enable_system thermal
56+
echo 1 > tracing_on
57+
}
58+
59+
if [ ! -f set_event -o ! -d events/sched ]; then
60+
echo "event tracing is not supported"
61+
exit_unsupported
62+
fi
63+
64+
if [ ! -f set_event_pid -o ! -f set_event_notrace_pid ]; then
65+
echo "event pid notrace filtering is not supported"
66+
exit_unsupported
67+
fi
68+
69+
echo 0 > options/event-fork
70+
71+
do_reset
72+
73+
read mypid rest < /proc/self/stat
74+
75+
echo $mypid > set_event_notrace_pid
76+
grep -q $mypid set_event_notrace_pid
77+
78+
enable_events
79+
80+
yield
81+
82+
echo 0 > tracing_on
83+
84+
cnt=`count_pid $mypid`
85+
if [ $cnt -ne 0 ]; then
86+
fail "Filtered out task has events"
87+
fi
88+
89+
cnt=`count_no_pid $mypid`
90+
if [ $cnt -eq 0 ]; then
91+
fail "No other events were recorded"
92+
fi
93+
94+
do_reset
95+
96+
echo $mypid > set_event_notrace_pid
97+
echo 1 > options/event-fork
98+
99+
enable_events
100+
101+
yield &
102+
child=$!
103+
echo "child = $child"
104+
wait $child
105+
106+
echo 0 > tracing_on
107+
108+
cnt=`count_pid $mypid`
109+
if [ $cnt -ne 0 ]; then
110+
fail "Filtered out task has events"
111+
fi
112+
113+
cnt=`count_pid $child`
114+
if [ $cnt -ne 0 ]; then
115+
fail "Child of filtered out taskhas events"
116+
fi
117+
118+
cnt=`count_no_pid $mypid`
119+
if [ $cnt -eq 0 ]; then
120+
fail "No other events were recorded"
121+
fi
122+
123+
do_reset
124+
125+
exit 0

0 commit comments

Comments
 (0)