Merge tag 'x86_seves_fixes_for_v5.10_rc1' of git://git.kernel.org/pub/scm/linux/kerne...
[linux-block.git] / tools / bootconfig / scripts / ftrace.sh
1 # SPDX-License-Identifier: GPL-2.0-only
2
3 clear_trace() { # reset trace output
4     echo > trace
5 }
6
7 disable_tracing() { # stop trace recording
8     echo 0 > tracing_on
9 }
10
11 enable_tracing() { # start trace recording
12     echo 1 > tracing_on
13 }
14
15 reset_tracer() { # reset the current tracer
16     echo nop > current_tracer
17 }
18
19 reset_trigger_file() {
20     # remove action triggers first
21     grep -H ':on[^:]*(' $@ |
22     while read line; do
23         cmd=`echo $line | cut -f2- -d: | cut -f1 -d"["`
24         file=`echo $line | cut -f1 -d:`
25         echo "!$cmd" >> $file
26     done
27     grep -Hv ^# $@ |
28     while read line; do
29         cmd=`echo $line | cut -f2- -d: | cut -f1 -d"["`
30         file=`echo $line | cut -f1 -d:`
31         echo "!$cmd" > $file
32     done
33 }
34
35 reset_trigger() { # reset all current setting triggers
36     if [ -d events/synthetic ]; then
37         reset_trigger_file events/synthetic/*/trigger
38     fi
39     reset_trigger_file events/*/*/trigger
40 }
41
42 reset_events_filter() { # reset all current setting filters
43     grep -v ^none events/*/*/filter |
44     while read line; do
45         echo 0 > `echo $line | cut -f1 -d:`
46     done
47 }
48
49 reset_ftrace_filter() { # reset all triggers in set_ftrace_filter
50     if [ ! -f set_ftrace_filter ]; then
51       return 0
52     fi
53     echo > set_ftrace_filter
54     grep -v '^#' set_ftrace_filter | while read t; do
55         tr=`echo $t | cut -d: -f2`
56         if [ "$tr" = "" ]; then
57             continue
58         fi
59         if ! grep -q "$t" set_ftrace_filter; then
60                 continue;
61         fi
62         name=`echo $t | cut -d: -f1 | cut -d' ' -f1`
63         if [ $tr = "enable_event" -o $tr = "disable_event" ]; then
64             tr=`echo $t | cut -d: -f2-4`
65             limit=`echo $t | cut -d: -f5`
66         else
67             tr=`echo $t | cut -d: -f2`
68             limit=`echo $t | cut -d: -f3`
69         fi
70         if [ "$limit" != "unlimited" ]; then
71             tr="$tr:$limit"
72         fi
73         echo "!$name:$tr" > set_ftrace_filter
74     done
75 }
76
77 disable_events() {
78     echo 0 > events/enable
79 }
80
81 clear_synthetic_events() { # reset all current synthetic events
82     grep -v ^# synthetic_events |
83     while read line; do
84         echo "!$line" >> synthetic_events
85     done
86 }
87
88 initialize_ftrace() { # Reset ftrace to initial-state
89 # As the initial state, ftrace will be set to nop tracer,
90 # no events, no triggers, no filters, no function filters,
91 # no probes, and tracing on.
92     disable_tracing
93     reset_tracer
94     reset_trigger
95     reset_events_filter
96     reset_ftrace_filter
97     disable_events
98     [ -f set_event_pid ] && echo > set_event_pid
99     [ -f set_ftrace_pid ] && echo > set_ftrace_pid
100     [ -f set_ftrace_notrace ] && echo > set_ftrace_notrace
101     [ -f set_graph_function ] && echo | tee set_graph_*
102     [ -f stack_trace_filter ] && echo > stack_trace_filter
103     [ -f kprobe_events ] && echo > kprobe_events
104     [ -f uprobe_events ] && echo > uprobe_events
105     [ -f synthetic_events ] && echo > synthetic_events
106     [ -f snapshot ] && echo 0 > snapshot
107     clear_trace
108     enable_tracing
109 }