selftests/ftrace: Correctly enable event in instance-event.tc
[linux.git] / tools / testing / selftests / ftrace / test.d / instances / instance-event.tc
1 #!/bin/sh
2 # SPDX-License-Identifier: GPL-2.0
3 # description: Test creation and deletion of trace instances while setting an event
4 # requires: instances
5
6 fail() { # mesg
7     rmdir foo 2>/dev/null
8     echo $1
9     set -e
10     exit_fail
11 }
12
13 cd instances
14
15 # we don't want to fail on error
16 set +e
17
18 mkdir x
19 rmdir x
20 result=$?
21
22 if [ $result -ne 0 ]; then
23     echo "instance rmdir not supported"
24     exit_unsupported
25 fi
26
27 instance_slam() {
28         while :; do
29                 mkdir foo 2> /dev/null
30                 rmdir foo 2> /dev/null
31         done
32 }
33
34 instance_read() {
35         while :; do
36                 cat foo/trace 1> /dev/null 2>&1
37         done
38 }
39
40 instance_set() {
41         while :; do
42                 echo 1 > foo/events/sched/sched_switch/enable
43         done 2> /dev/null
44 }
45
46 instance_slam &
47 p1=$!
48 echo $p1
49
50 instance_set &
51 p2=$!
52 echo $p2
53
54 instance_read &
55 p3=$!
56 echo $p3
57
58 sleep 1
59
60 kill -1 $p3
61 kill -1 $p2
62 kill -1 $p1
63
64 echo "Wait for processes to finish"
65 wait $p1 $p2 $p3
66 echo "all processes finished, wait for cleanup"
67 sleep 1
68
69 mkdir foo
70 ls foo > /dev/null
71 rmdir foo
72 if [ -d foo ]; then
73         fail "foo still exists"
74 fi
75
76 mkdir foo
77 echo "schedule:enable_event:sched:sched_switch" > foo/set_ftrace_filter
78 rmdir foo
79 if [ -d foo ]; then
80         fail "foo still exists"
81 fi
82 if grep -q "schedule:enable_event:sched:sched_switch" ../set_ftrace_filter; then
83         echo "Older kernel detected. Cleanup filter"
84         echo '!schedule:enable_event:sched:sched_switch' > ../set_ftrace_filter
85 fi
86
87 instance_slam() {
88     while :; do
89         mkdir x
90         mkdir y
91         mkdir z
92         rmdir x
93         rmdir y
94         rmdir z
95     done 2>/dev/null
96 }
97
98 instance_slam &
99 p1=$!
100 echo $p1
101
102 instance_slam &
103 p2=$!
104 echo $p2
105
106 instance_slam &
107 p3=$!
108 echo $p3
109
110 instance_slam &
111 p4=$!
112 echo $p4
113
114 instance_slam &
115 p5=$!
116 echo $p5
117
118 ls -lR >/dev/null
119 sleep 1
120
121 kill -1 $p1
122 kill -1 $p2
123 kill -1 $p3
124 kill -1 $p4
125 kill -1 $p5
126
127 echo "Wait for processes to finish"
128 wait $p1 $p2 $p3 $p4 $p5
129 echo "all processes finished, wait for cleanup"
130
131 mkdir x y z
132 ls x y z
133 rmdir x y z
134 for d in x y z; do
135         if [ -d $d ]; then
136                 fail "instance $d still exists"
137         fi
138 done
139
140 set -e
141
142 exit 0
This page took 0.039777 seconds and 4 git commands to generate.