GNU Linux-libre 4.14.313-gnu1
[releases.git] / tools / testing / selftests / ftrace / test.d / event / subsystem-enable.tc
1 #!/bin/sh
2 # SPDX-License-Identifier: GPL-2.0
3 # description: event tracing - enable/disable with subsystem level files
4 # flags: instance
5
6 do_reset() {
7     echo > set_event
8     clear_trace
9 }
10
11 fail() { #msg
12     do_reset
13     echo $1
14     exit $FAIL
15 }
16
17 yield() {
18     ping localhost -c 1 || sleep .001 || usleep 1 || sleep 1
19 }
20
21 if [ ! -f set_event -o ! -d events/sched ]; then
22     echo "event tracing is not supported"
23     exit_unsupported
24 fi
25
26 reset_tracer
27 do_reset
28
29 echo 'sched:*' > set_event
30
31 yield
32
33 count=`cat trace | grep -v ^# | awk '{ print $5 }' | sort -u | wc -l`
34 if [ $count -lt 3 ]; then
35     fail "at least fork, exec and exit events should be recorded"
36 fi
37
38 do_reset
39
40 echo 1 > events/sched/enable
41
42 yield
43
44 count=`cat trace | grep -v ^# | awk '{ print $5 }' | sort -u | wc -l`
45 if [ $count -lt 3 ]; then
46     fail "at least fork, exec and exit events should be recorded"
47 fi
48
49 do_reset
50
51 echo 0 > events/sched/enable
52
53 yield
54
55 count=`cat trace | grep -v ^# | awk '{ print $5 }' | sort -u | wc -l`
56 if [ $count -ne 0 ]; then
57     fail "any of scheduler events should not be recorded"
58 fi
59
60 do_reset
61
62 exit 0